我有一个电子邮件正则表达式,如下所示:
/^[_a-z0-9]+(\.[_a-z0-9]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,10})$/
挑战是允许在@符号前插入连字符'-',但有一些限制:
1)电子邮件不能以连字符开头
2)连字符不能在@符号之前。
3)不允许在“-”行中使用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个连字符。