自定义电子邮件正则表达式以允许插入连字符

时间:2018-10-11 12:36:31

标签: javascript regex

我有一个电子邮件正则表达式,如下所示:

/^[_a-z0-9]+(\.[_a-z0-9]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,10})$/

挑战是允许在@符号前插入连字符'-',但有一些限制:

1)电子邮件不能以连字符开头

2)连字符不能在@符号之前。

3)不允许在“-”行中使用2个连字符。

2 个答案:

答案 0 :(得分:1)

您可以将第一个\.替换为与[.-].匹配的- character class

^[_a-z0-9]+(?:[.-][_a-z0-9]+)*@[a-z0-9-]+(?:\.[a-z0-9-]+)*\.[a-z]{2,10}$
              ^^^^

请参见regex demo

我还删除了不必要的分组,并将捕获组转换为非捕获以简化匹配。

答案 1 :(得分:0)

您可以尝试以下方法:

^[_a-z0-9]+(\.[_a-z0-9]+)*@(?!.*--)[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,10})$
  

3)不允许在“-”行中使用2个连字符。

请参见https://regex101.com/r/r7iCEN/1