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

时间:2017-03-30 08:51:12

标签: regex

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

^(?:(?:[a-z])+(.|_)?(?!\.))*\w@(?:(?:[a-z])+(-|.)?(?!\.))*\w\.\w{2,}$

现在,我的电子邮件验证工作正常。以下是一些测试(根据regex101):

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

因此,可以使用多个@,这对于电子邮件无效。

我有点看不出我做错了什么。

注:

我知道有一个stackoverflow问题有一个关于如何用正则表达式验证电子邮件的方法,但是:我想知道我做错了什么,所以我可以从中学习。

1 个答案:

答案 0 :(得分:1)

我自己发现了这个问题。以下正则表达式确实有效:

^(?:(?:\w)+(\.|_)?(?!\.))*\w@(?:(?:[a-z])+(-|\.)?(?!\.))*[a-z]\.[a-z]{2,}$

我将(.|_)更改为(\.|_)并将(-|.)更改为(-|\.)以使用.字面上作为句点而不是“所有字符”通配符“' 。我在\w\.\w{2,}中更改了[a-z]\.[a-z]{2,}以禁用最后一部分中的_