我的正则表达式有问题。我以前没有测试过这个。我有以下正则表达式:
^(?:(?:[a-z])+(.|_)?(?!.))*w@(?:(?:[a-z])+(-|.)?(?!.))*w.w{2,}$
现在,我的电子邮件验证工作了一半。以下是一些测试(根据正则表达式101(:
test -- invalid
test@ -- invalid
test@test -- invalid
test@test. -- invalid
test@test.de -- valid
test@test.de. -- invalid
test@test@test.com -- valid
test...test@test.com -- invalid
因此,可以使用多个对电子邮件无效的@
。
有点看不出我做错了什么。
注意:
我知道有一个堆栈溢出问题,它有一个关于如何使用正则表达式验证电子邮件的方法,但是:我想知道我做错了什么,以便我可以从中学习。
我自己发现了问题。以下正则表达式确实有效:
^(?:(?:w)+(.|_)?(?!.))*w@(?:(?:[a-z])+(-|.)?(?!.))*[a-z].[a-z]{2,}$
我把(.|_)
改成(.|_)
,(-|.)
改成(-|.)
,从字面上.
用作句点,而不是"全字符'通配符'"。我在[a-z].[a-z]{2,}
中更改了w.w{2,}
,以禁止最后一部分中的_
。