用于在'@'之前验证电子邮件长度的正则表达式

时间:2011-12-01 07:22:43

标签: php regex

我正在使用的开源cms使用以下正则表达式来验证电子邮件:

 valid_regex=^[_a-z0-9-]+(.[_a-z0-9-]+)@[a-z0-9-]+(.[a-z0-9-]+)(.[a-z]{2,3})$

我还需要在'@'符号前验证电子邮件地址的长度,以接受至少包含2个字符的电子邮件..我已经读过,使用{2,}将会有所帮助但是在哪里以及如何确切地说我应该用吗?......

3 个答案:

答案 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