多年来,我慢慢开发了一个正则表达式,可以正确验证MOST电子邮件地址,假设他们不使用IP地址作为服务器部分.
我在几个PHP程序中使用它,它大部分时间都可以工作.但是,我不时会遇到使用它的网站遇到问题的人,我最终不得不进行一些调整(最近我意识到我不允许使用4字符TLD).
验证电子邮件的最佳正则表达式是什么?
我已经看到了几个使用函数的解决方案,这些函数使用了几个较短的表达式,但我宁愿在一个简单的函数中使用一个长复杂表达式,而不是在一个更复杂的函数中使用几个短表达式.
我已经编写了下面的正则表达式来进行非常简单的电子邮件验证.我打算发送确认链接.
/.*@[a-z0-9.-]*/i
Run Code Online (Sandbox Code Playgroud)
但是,我想从当前状态增强它,因为像这样的字符串不会产生所需的结果:
test,my.name + test @ gmail-something.co.uk,test
"测试"部分不合需要地包括在匹配中.我没有成功地尝试过单词边界.
谢谢!
可能重复:
如何在php5中验证电子邮件?
我使用以下代码确保注册时提供的电子邮件地址有效.
(!preg_match("/^( [a-zA-Z0-9] )+( [a-zA-Z0-9\._-] )*@( [a-zA-Z0-9_-] )+( [a-zA-Z0-9\._-] +)+$/" , $email))
Run Code Online (Sandbox Code Playgroud)
我输入了一个标准的电子邮件地址,如
yourname@company.co.uk
它被标记为无效.
任何人都可以帮我解释为什么会这样吗?
我有一个很好的电子邮件vaidation正则表达式: 电子邮件正则表达式
public static void Main(string[] args)
{
string value = @"cvcvcvcvvcvvcvcvcvcvcvvcvcvcvcvcvvccvcvcvc";
var regex = new Regex(
@"^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$",
RegexOptions.Compiled);
var x = regex.Match(value); // Hangs here !?!
return;
}
Run Code Online (Sandbox Code Playgroud)
它适用于大多数情况,但上面的代码挂起,燃烧100%CPU ...我已经在W8 metro应用程序中测试过.以及标准的.Net 4.5应用程序.
任何人都可以告诉我为什么会发生这种情况,如果有一个好的电子邮件验证REGEX没有挂起,或者有没有办法解决这个问题?
非常感谢,乔恩