电子邮件验证表达式允许使用下划线

时间:2018-09-12 08:28:10

标签: javascript regex

电子邮件验证表达式/^(?!_)\w+([\.-]?\w+)*@(?!_)\w+([\.-]?\w+)*(\.\w{2,3})+$/在某些情况下可以使用下划线,但在其他情况下则可以正常使用。

它不会失败以下电子邮件地址:

tets_name@gmail.com
test____name@gmail.com

以下是模式:

var pattern =/^(?!_)\w+([\.-]?\w+)*@(?!_)\w+([\.-]?\w+)*(\.\w{2,3})+$/;     
if (pattern.test(Email)) {
    return false;
}

我该如何限制不允许下划线?

2 个答案:

答案 0 :(得分:1)

请注意,\w匹配ASCII字母([A-Za-z]),数字([0-9])和下划线。

为确保您的正则表达式与下划线不匹配,请将所有\w替换为[a-zA-Z0-9],最后一个\w{2,3}替换为[a-zA-Z]{2,3}

/^[a-zA-Z0-9]+(?:[.-][a-zA-Z0-9]+)*@[a-zA-Z0-9]+(?:[.-][a-zA-Z0-9]+)*\.[a-zA-Z]{2,3}$/

如果您打算匹配仅在字母/数字之间包含单个下划线而不在开始/结束使用时包含下划线的电子邮件

/^[a-zA-Z0-9]+(?:[_.-][a-zA-Z0-9]+)*@[a-zA-Z0-9]+(?:[_.-][a-zA-Z0-9]+)*\.[a-zA-Z]{2,3}$/

请参见this regexanother regex here

详细信息

  • ^-字符串的开头
  • [a-zA-Z0-9]+-1个或多个ASCII字母/数字
  • (?:[.-][a-zA-Z0-9]+)*-零个或多个序列
    • [.-]-点或-(无需在字符类中转义点)
    • [a-zA-Z0-9]+-1个或多个ASCII字母/数字
  • @-一个@字符
  • [a-zA-Z0-9]+-1个或多个ASCII字母/数字
  • (?:[.-][a-zA-Z0-9]+)*-零个或多个序列
    • [.-]-点或-(无需在字符类中转义点)
    • [a-zA-Z0-9]+-1个或多个ASCII字母/数字
  • \.-一个点
  • [a-zA-Z]{2,3}-2或3个ASCII字母
  • $-字符串的结尾。

答案 1 :(得分:1)

您可以尝试一下,我只是在负面的展望中添加了.*,您只是在字符串的开头寻找单个_,但是-可以位于其他位置

^(?!.*_)\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$

try demo here

查看链接上的说明