FF+Firebug报错“正则表达式太复杂”,IE崩溃,Chrome挂起

FF+Firebug got an error "Regular Expression too complex", IE crashed and Chrome hung

本文关键字:IE 崩溃 Chrome 挂起 复杂 报错 正则表达式 FF+Firebug      更新时间:2023-09-26

根据这个http://www.utexas.edu/its/help/domain-name-hosting-and/847然后我做了这个正则表达式:

/^[a-z]('w+'.?'w*[a-z0-9]){5,17}@[a-z]((a-z0-9'-]{1,25}'.[a-z]{2,4})|([a-z0-9'-]{1,25}'.[a-z]{2,3}'.[a-z]{2,3}))$/;

抛出这个值:
asdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbn@yahoo.com

Firefox + firebug说"正则表达式太复杂",IE崩溃和Chrome挂起,是有什么问题的正则表达式?

缺失[

]

/^[a-z]('w+'.?'w*[a-z0-9]){5,17}@[a-z]((

here [

a-z0-9'-]{1,25}'.[a-z]{2,4})|([a-z0-9'-]{1,25}'.[a-z]{2,3}'.[a-z]{2,3}))$/;

试试这个(你的解决方案打印错误):

^[a-z]('w+'.?'w*[a-z0-9]){5,17}@[a-z](([a-z0-9'-]{1,25}'.[a-z]{2,4})|([a-z0-9'-]{1,25}'.[a-z]{2,3}'.[a-z]{2,3}))$

我想你把(a-z0-9'-]{1,25}里的[给忘了

这里的实际问题(忽略缺失的[)是您有一个贪婪限定符(/w+/w*),后面跟着一个范围({5,17})

意思是:

  • 查找任意数量的'w字符
  • 过滤器降至5-17

引擎只在找到"任意数字"后才进行过滤,并且在这里变得非常困惑…

这是一个奇怪的表达:('w+'.?'w*[a-z0-9]){5,17}{5,17}应该几乎肯定是在部分,而不是整个东西。

如果有人有像john.doe@media.company.info或jane.doe@company.office这样的电子邮件地址怎么办?

试试这个:

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:'.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:['x01-'x08'x0b'x0c'x0e-'x1f'x21'x23-'x5b'x5d-'x7f]|''['x01-'x09'x0b'x0c'x0e-'x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?'.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|'[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:['x01-'x08'x0b'x0c'x0e-'x1f'x21-'x5a'x53-'x7f]|''['x01-'x09'x0b'x0c'x0e-'x7f])+)'])
http://regexpal.com/