正则表达式在文本中查找电子邮件
我正在使用PHP查找给定文本中的电子邮件地址。 我现在的正则表达式是:正则表达式在文本中查找电子邮件
'/([\w+\.]*\[email protected][\w+\.]*\w+[\w+\-\w+]*\.\w+)/is'
它消耗了大量的CPU资源。是否有任何优化和低资源利用率(即CPU)RegEx用于查找给定文本中的有效电子邮件。
试试这个
/[-\d\w\W][email protected][-\d\w.+_]+.\w{2,4}/
匹配:
电子邮件包含符号也。这个正则表达式不会检查这个。 –
但不是这些人物! #$%&'* + -/=?^_'{| }〜 –
请参阅http://stackoverflow.com/questions/2049502/what-characters-are-allowed-in-email-address – keziah
这
测试/^[^@][email protected][a-z]+(\.[a-z]+)+$/
比你的要好。
为什么?
比方说,我们要测试的这款电邮:[email protected]
在成功的情况下,我的正则表达式执行14步找到解决方案。
您在22步。
但最大的区别是不匹配的CASE
比方说,我们要测试的这款电邮:[email protected]
我的正则表达式执行31步骤和失败
此致(这应该是用^
和$
分隔符修改,否则它会匹配这个作为好的一个)执行292个步骤并失败!
你正在使用什么应用程序来检查你的正则表达式?你能告诉我,所以我也可以检查我犯的错误。 –
@Siddharthsharma:使用regex101.com – DonCallisto
谢谢!!!!! –
可能使用[使用正则表达式验证电子邮件地址]的副本(http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address) – RAnders00
使用@ RAnders00提到的正则表达式,或者你需要使用原子组或占有量词,否则会有太多的回溯__(你的正则表达式虽然不正确)__ – rock321987
感谢@ RAnders00指向那个链接.. –