为了验证电子邮件地址,我使用以下正则表达式 来自www.regular-expressions.info:
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
使用上述正则表达式的问题是,我可以成功验证电子邮件地址的双重'@',如下所示:
name@surname@gmail.com # Note the double '@'
test@gmail@com.com
... 我不想要。那么,我该如何调整呢?
更新
我还发现正则表达式不会拒绝这样的电子邮件地址:
name@gmail
test@surname@gmail
答案 0 :(得分:3)
您当前的正则表达式匹配任何包含有效电子邮件的字符串。您的输入字符串nome@surname@gmail.com
包含有效的电子邮件surname@gmail.com
。
您需要将开始锚点(^
)和结束锚点($
)添加到正则表达式,以便正则表达式与完整字符串匹配,而不是适当的子串。
尝试:
^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$
答案 1 :(得分:0)
假设您“可能”使用.net,这是我用于验证电子邮件地址的正则表达式。
^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})$