我正在尝试在 php 程序中接收电子邮件,并且正在使用以下正则表达式
([a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)\b)siU
这似乎可以很好地获取您的标准电子邮件。比如me @ gmail.com
或you @ hotmail.com
失败的地方是结尾为 co.uk 的电子邮件。现在我尝试在我的正则表达式中添加 co.uk
([a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|co.uk|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)\b)siU
但这只是给我与原始正则表达式相同的输出。电子邮件的输出在哪里, you@co 。我也试过加入英国。我在这个上缺少什么?是第二个时期扔掉它吗?
理想情况下,我试图让它捕获所有带有 .com .net .org co.uk .au .ca 的电子邮件。基本上我正在搜索所有美国、英国、澳大利亚和加拿大的电子邮件。谁能发现我的错误是能够正确输出非美国电子邮件you @ yoursite.co.uk
而不是you @ yoursite.co
谢谢你。例如,显示的电子邮件中的空格仅用于发布此内容。
编辑:我不是要验证电子邮件,它是一系列电子邮件,可以是数组中的任何内容,我试图只为数据库捕获特定的电子邮件。很抱歉最初没有说清楚。
Edit2:这是我的问题的工作字符串。感谢大家
^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$^