我正在使用的开源cms使用以下正则表达式来验证电子邮件:
valid_regex=^[_a-z0-9-]+(.[_a-z0-9-]+)@[a-z0-9-]+(.[a-z0-9-]+)(.[a-z]{2,3})$
我还需要在'@'符号前验证电子邮件地址的长度,以接受至少包含2个字符的电子邮件..我已经读过,使用{2,}将会有所帮助但是在哪里以及如何确切地说我应该用吗?......
答案 0 :(得分:2)
验证电子邮件,请勿使用正则表达式。改为使用
if (filter_var($input, FILTER_VALIDATE_EMAIL) !== false) {
如果你还想在@之前验证长度,那就简单了
if (strpos($input, '@') < 2) {
应该足够了。
答案 1 :(得分:1)
您的正则表达式已经强制该电子邮件在@之前至少为2个(或更确切地说是3个)字符。
[_a-z0-9-]+(.[_a-z0-9-]+)
^ ^
在这两种情况下,您都使用+
符号,以下符号应重复1次或多次。请注意,此正则表达式将无法匹配多个有效的电子邮件地址,并且还存在许多其他问题。
对于启动器,您应该使用反斜杠\.
来转义每个点,因为现在您强制所有地址只有一个点。
一个简单的解决方案是在当前的正则表达式中使点可选:
[_a-z0-9-]+(\.?[_a-z0-9-]+)+
我猜你真的不想限制地址只有一个点。如果您想要,只需删除最后一个加号。
您可以在此处看到它:http://regexr.com?2vbof
答案 2 :(得分:0)
我建议使用这个极其复杂且经过全面测试的RegEx来验证电子邮件地址:
http://fightingforalostcause.net/misc/2006/compare-email-regex.php