正则表达式电子邮件检查无法正常工作



我的正则表达式有问题。我以前没有测试过这个。我有以下正则表达式:

^(?:(?:[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,},以禁止最后一部分中的_

最新更新