我正在使用PHP查找给定文本中的电子邮件地址。 我目前的正则表达式是:
'/([\w+\.]*\w+@[\w+\.]*\w+[\w+\-\w+]*\.\w+)/is'
耗费了大量的CPU资源。是否有任何优化和低资源利用(即CPU)RegEx来查找给定文本中的有效电子邮件。
答案 0 :(得分:1)
这个
/^[^@]+@[a-z]+(\.[a-z]+)+$/
比你好。
假设我们要测试此电子邮件:foo@bar.co.uk
如果成功,我的正则表达式会执行 14个步骤来找到解决方案 你的 22步。
假设我们要测试此电子邮件:foo@bar.co.uk.foo.
我的正则表达式执行 31步并失败
你的(应该使用^
和$
分隔符进行修改,否则它会与此匹配)执行 292步骤并失败!
答案 1 :(得分:1)
为了获得更好的表现,有时需要权衡一些误报:
/[^ @]*@[^ ]*/
这应该很快。它也会匹配__imp__MessageBoxW@16
之类的内容,但这种结构在普通文本中并不常见。
答案 2 :(得分:0)
试试这个
/[-\d\w\W]+@[-\d\w.+_]+.\w{2,4}/
匹配
hello.world@example.com
my_guru@lcoalhost
guy.31@site.co
等等......