javascript - 如何防止正则表达式验证@字符后的双点

标签 javascript regex

我在 js 中使用以下正则表达式

^[a-zA-Z0-9._+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$

这将验证子域中的电子邮件(例如: <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a2cfdbccc3cfc7e2c5cdcdc5cec78cc1cd8ccbcc" rel="noreferrer noopener nofollow">[email protected]</a> ) 不幸的是,双点也被验证为 true,例如

<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a9c4d0c7c8c4cce98787c0c7" rel="noreferrer noopener nofollow">[email protected]</a>
<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="15786c7b74787055717a78747c7b3b3b7c7b" rel="noreferrer noopener nofollow">[email protected]</a>

我理解了@[a-zA-Z0-9.-]部分是要修改但有点震惊。最好的继续方式是什么。

TIA

最佳答案

尝试使用:

^([\w+-]+\.)*[\w+-]+@([\w+-]+\.)*[\w+-]+\.[a-zA-Z]{2,4}$

我已将 [a-zA-Z0-9_] 替换为字符组中完全相同的 \w

请注意,在正则表达式语言中,点 . 是一个特殊字符,可以匹配所有内容(除了换行符)。因此,要匹配文字点,您需要对其进行转义 \..

传说:

  • ^ 字符串开头
  • ([\w+-]+\.)* 零个或多个正则表达式单词(除了加号 + 和减号-)由 1 个或多个字符后跟一个文字点 \.
  • 组成
  • [\w+-]+ 1 个或多个字符的正则表达式单词(加上 [+-])
  • @ 文字字符
  • ([\w+-]+\.)*[\w+-]+ 与上面的顺序相同
  • \.[a-zA-Z]{2,4} 文字点,后跟长度在 2 到 4 个字符之间的小写或大写字符序列。
  • $ 字符串结尾

关于javascript - 如何防止正则表达式验证@字符后的双点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33994105/

相关文章:

php - Javascript 在每次加载图像时调整大小

javascript - 自己的 JavaScript 没有运行

c - C中的正则表达式,检查字符串是否包含特定字符

java - 正则表达式处理逗号、双引号、引号

regex - 从 bash 中的正则表达式捕获组

php - 用于 PHP 的正则表达式看起来很简单但是让我很痛苦

javascript - 从多维对象获取数组

javascript - JavaScript 媒体查询和 CSS 动画的问题

javascript - jQuery $ 是如何初始化的?它是如何在全局范围内使用的?

javascript - 用于检查字符串的正则表达式,该字符串必须包含空格并且是字母数字