正确的问题与IE7试图验证时电子邮件地址

正确的问题与IE7试图验证时电子邮件地址

问题描述:

我想知道一个令人讨厌的问题,使用正则表达式的电子邮件验证。 我使用这个正则表达式在网页上验证电子邮件地址:正确的问题与IE7试图验证时电子邮件地址

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

但没有成功。

+1

lookahead的功能是什么?在这种情况下,我看不到有用的东西。只需从http://www.regular-expressions.info/email.html – Gerben

是右后-故意的

@(?=[a-zA-Z0-9-\.]{0,255}\.?\s*$)[a- zA-Z0-9-]{1,63} 

在最后一组的空间?这可能不适用于保守的引擎。

+0

复制粘贴电子邮件正则表达式否否是我的复制粘贴错误在这个网站上的空白:) – user960869

+0

在这种情况下 - 你可以编辑请问这个问题? – krlmlr

我得到这个正则表达式,它似乎做的工作权利:

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})$"; 

您是否尝试过完全移除先行?我同意@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*$