2016-05-16 123 views
0

我正在使用PHP查找给定文本中的电子邮件地址。 我现在的正则表达式是:正则表达式在文本中查找电子邮件

'/([\w+\.]*\[email protected][\w+\.]*\w+[\w+\-\w+]*\.\w+)/is' 

它消耗了大量的CPU资源。是否有任何优化和低资源利用率(即CPU)RegEx用于查找给定文本中的有效电子邮件。

+3

可能使用[使用正则表达式验证电子邮件地址]的副本(http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address) – RAnders00

+1

使用@ RAnders00提到的正则表达式,或者你需要使用原子组或占有量词,否则会有太多的回溯__(你的正则表达式虽然不正确)__ – rock321987

+0

感谢@ RAnders00指向那个链接.. –

回答

1

测试
/^[^@][email protected][a-z]+(\.[a-z]+)+$/ 

比你的要好。

为什么?

比方说,我们要测试的这款电邮:[email protected]

在成功的情况下,我的正则表达式执行14步找到解决方案。
您在22步

但最大的区别是不匹配的CASE

比方说,我们要测试的这款电邮:[email protected]

我的正则表达式执行31步骤和失败

此致(这应该是用^$分隔符修改,否则它会匹配这个作为好的一个)执行292个步骤并失败!

+0

你正在使用什么应用程序来检查你的正则表达式?你能告诉我,所以我也可以检查我犯的错误。 –

+0

@Siddharthsharma:使用regex101.com – DonCallisto

+0

谢谢!!!!! –

1

有时交易掉一些误报有更好的表现最好:

/[^ @]*@[^ ]*/ 

这应该是相当快。它也将匹配像[email protected]这样的东西,但这样的结构在普通文本中并不常见。

相关问题