尝试验证电子邮件地址时,IE7的RegEx问题

时间:2011-09-23 10:09:36

标签: regex internet-explorer-7

我想知道使用正则表达式进行电子邮件验证时出现的烦人问题。 我正在使用此正则表达式验证网页上的电子邮件地址:

^\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*$

但没有成功。

3 个答案:

答案 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*$
相关问题