我有以下电子邮件REGEX验证。
([a-zA-Z0-9_\-\.]+)([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})
当我测试时,它不允许在@ .e.g t@stackoverflow.com之前使用单个字符的电子邮件,但在@之前它允许2个字符。例如th@stackoverflow.com 那么有人可以告诉我哪里出错了吗? 提前致谢
答案 0 :(得分:2)
第二组应该有允许0个字符的量化器。这似乎是resolve问题:
...([a-zA-Z0-9]*)@...
更新。正如@Nyx在评论中指出的那样,上面的内容将匹配address.@themail.com
。如果要避免这种情况,您可以将zero or more
量化器应用于第一组,将one or more
应用于第二组:
([a-zA-Z0-9_\-\.]*)([a-zA-Z0-9]+)@...
答案 1 :(得分:0)
使用此正则表达式:
[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})
但验证正则表达式是一个坏主意。
为什么?
查看文章:http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx
答案 2 :(得分:0)
由于 + :
,第一部分需要1个或多个字符([a-zA-Z0-9_\-\.]+)
第二个1个字符:
([a-zA-Z0-9])
所以最终产生2个或更多字符。