我使用以下表达式验证电子邮件:
^[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+(?:[a-zA-Z]{2}|com|COM|CoM|cOM|coM|COm|edu|org|net|gov|biz|info|name|aero|biz|info|jobs|museum)\b
但是,它仍然允许我输入无效的电子邮件,如下面的内容......
mynameis@domain.co,uk
我想不允许使用co和uk之间的逗号。
有什么建议吗?
答案 0 :(得分:2)
如果你不想在任何地方使用逗号,你可以尝试前瞻。
^(.(?!,))*$
有了这个,如果你在任何地方都有逗号,它将不再匹配。当然,您需要将它放在现有表达式中,而不需要开始和结束锚点。我建议Regexpal来测试这些正则表达式。
此外,您可能希望从电子邮件地址中排除双倍期限。我用:
^(?!.*\.{2})[ ]*[\w]+[\w\.]*[\w]*@[\w]+\.[a-zA-Z]+[ ]*
满足我的需求。
现在\w
允许[A-Za-z0-9_]
由于下划线而导致奇数,但我非常确定电子邮件地址中允许使用 。这也可以防止您的电子邮件地址出现双倍期限,也不会允许第一个或最后一个字符成为句点,这是非法的。