在模式结束时检测空间字符的另一个正则表达式问题

时间:2017-01-25 10:55:13

标签: regex

我的正则表达式是:

(\w|-|\.)+@((\w|-|)+[.]?(\w|-)+)+[.](\w){2,3}

(正则表达式电子邮件)

确实找到了匹配:

  

之前的blabla@blablabli.com之前的

如果我尝试在正则表达式的末尾添加空格字符检测:

(\w|-|\.)+@((\w|-|)+[.]?(\w|-)+)+[.](\w){2,3}\s

它不再识别匹配。

为什么?

我在https://regex101.com上进行了测试。

3 个答案:

答案 0 :(得分:1)

由于灾难性的回溯而失败。你的正则表达式过于复杂。切换到

之类的东西
([\w.-]+)@([\w-]*\.?[\w-]+)+[.](\w){2,3}

它会像char一样工作。 Demo

答案 1 :(得分:-1)

此表达式后您可以拥有多个空格。

^(\ W | - |。)+ @((\ W | - |)+(\ W [。] | - ?)+)。+ {2,3} \ S + $

(\ W | - |。)+ @((\ W | - |)+(\ W [。] | - ?)+)。+ {2,3} \ S +

答案 2 :(得分:-1)

这个确实针对电子邮件检测进行了优化:

\s\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w{2,3}\s

速度与激情。