我想知道使用正则表达式进行电子邮件验证时出现的烦人问题。 我正在使用此正则表达式验证网页上的电子邮件地址:
^\s*[a-zA-Z0-9_\+-]{1,63}(\.[a-zA-Z0-9_\+-]{1,63})*@(?=[a-zA-Z0-9-\.]{0,255}\.?\s*$)[a- zA-Z0-9-]{1,63}(\.[a-zA-Z0-9-]{1,63}){0,126}\.([a-zA-Z]{2,63})\.?\s*$
现在这适用于IE8 - >以及最新的Mozilla和Opera版本。 我已经阅读了这篇文章:http://blog.stevenlevithan.com/archives/regex-lookahead-bug
但即使我正在使用。*与?=我无法正常工作。任何RegEx大师都有想法我做错了什么。 我也试过这个:
^\s*[a-zA-Z0-9_\+-]{1,63}(\.[a-zA-Z0-9_\+-]{1,63})*@(?=.*[a-zA-Z0-9-\.]{0,255}\.*?\s*$)[a- zA-Z0-9-]{1,63}(\.[a-zA-Z0-9-]{1,63}){0,126}\.([a-zA-Z]{2,63})\.*?\s*$
但没有成功。
答案 0 :(得分:0)
最后一组
中的空格@(?=[a-zA-Z0-9-\.]{0,255}\.?\s*$)[a- zA-Z0-9-]{1,63}
在故意-
之后?这可能不适用于保守的引擎。
答案 1 :(得分:0)
我得到了这个正则表达式,它似乎正确地完成了工作:
const string myRegex = @"^(([\w-]+\.)+[\w-]+|([a-zA-Z]{1}|[\w-]{2,}))@"
+ @"((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\."
+ @"([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|"
+ @"([a-zA-Z]+[\w-]+\.)+[a-zA-Z]{2,4})$";
答案 2 :(得分:0)
您是否尝试完全删除前瞻?我同意@Gerben在你的正则表达式中没有用处:
^\s*[a-zA-Z0-9_\+-]{1,63}(\.[a-zA-Z0-9_\+-]{1,63})*@[a-zA-Z0-9-]{1,63}(\.[a-zA-Z0-9-]{1,63}){0,126}\.([a-zA-Z]{2,63})\.?\s*$