0

我正在使用以下表达式来验证电子邮件:

^[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 之间使用逗号。

有什么建议么?

4

1 回答 1

2

如果您不想在任何地方使用逗号,则可以尝试向前看。 ^(.(?!,))*$ 这样,如果您在任何地方都有逗号,它将不再匹配。当然,你需要把它放在你现有的表达式中,没有开始和结束锚点。我推荐Regexpal来测试这样的正则表达式。

此外,您可能希望从您的电子邮件地址中排除双句点。我用:

^(?!.*\.{2})[ ]*[\w]+[\w\.]*[\w]*@[\w]+\.[a-zA-Z]+[ ]*满足我的需要。

现在\w允许[A-Za-z0-9_]由于下划线而奇怪,但我很确定电子邮件地址中允许使用下划线。这也可以防止您的电子邮件地址中出现双句点,并且不允许第一个或最后一个字符是句点,这是非法的。

于 2012-06-27T16:02:54.817 回答