我的常规表达非常糟糕,所以我想在这方面寻求帮助。
我有一个正则表达式:
/[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;
它适用于我的电子邮件验证的大多数情况,但它允许通过以下方式:
test..testing @ gmail.com
如何将上述正则表达式更改为不允许整个字符串中的连续句点?
感谢。
答案 0 :(得分:10)
为避免匹配两个连续的点,您可以在正则表达式的开头添加一个负向前瞻:
/^(?!.*\.{2})[a-z0-9etc...
------------
如果字符串中有两个连续的句点,并且不需要对原始正则表达式进行任何其他修改,则它将无法匹配。
然而,这似乎是一个坏主意,因为你的正则表达式首先是不正确的。如果您坚持使用正则表达式来验证电子邮件地址,请尝试以下操作:
答案 1 :(得分:5)
别。该电子邮件地址为functional in practice(尽管technically invalid根据相关RFC)。
热门提示:不要使用正则表达式“验证”电子邮件地址,因为您会弄错。
答案 2 :(得分:0)