我目前在我的php脚本中使用此正则表达式来验证电子邮件地址:
preg_match_all("/[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-]+/i", $string, $matches);
问题是,这个特定的正则表达式不可靠,经常会发现一些误报。
我正在寻找regexlib.com找到一个更好的,但我从该网站获得的所有内容似乎都找不到匹配。
例如:
preg_match_all("^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$", $string, $matches);
什么也找不到,即使它应该根据regexlib工作。我已经在regexlib上尝试了前10个正则表达式用于电子邮件验证,但没有一个能够正常工作。我做错了吗?
链接到regexlib电子邮件类别:http://regexlib.com/DisplayPatterns.aspx?cattabindex=0&categoryId=1
谢谢,
答案 0 :(得分:3)
您的第二个正则表达式失败,因为您需要在PHP中添加delimiters:
"/([0-9a-zA-Z]...<snip>...[a-zA-Z]{2,9})/"
^ ^
here here
(我还删除了^
和$
,正如马里奥指出的那样。)
您可以尝试不同的方法:
相关强>
答案 1 :(得分:2)
三件事:
/
分隔符。 http://php.net/manual/en/regexp.reference.delimiters.php ^$
主题锚点。