使用IE&;匹配正则表达式时javascript挂起;铬
我得到了一个有缺陷的正则表达式使用IE&;匹配正则表达式时javascript挂起;铬,javascript,regex,internet-explorer,google-chrome,Javascript,Regex,Internet Explorer,Google Chrome,我得到了一个有缺陷的正则表达式“\w+([\.\-]?\w+*@” 当它尝试测试它是否匹配字符串时 "ffffffffffb3ffffffffffafffffffffffabffffffffffc2ffffffffffa7e" 这将导致IE和Chrome挂起。但在FF下效果很好 我发现正则表达式中的“?”是不必要的。当我去掉“?”后,它就工作了 但我不明白问题的原因是什么。 这里有一些测试 “\w+([\.\-]?\w+*”工作正常 “\w+([\.\-]\w+*@”工作正常 “\w+([\.
“\w+([\.\-]?\w+*@”
当它尝试测试它是否匹配字符串时
"ffffffffffb3ffffffffffafffffffffffabffffffffffc2ffffffffffa7e"
这将导致IE和Chrome挂起。但在FF下效果很好
我发现正则表达式中的“?”是不必要的。当我去掉“?”后,它就工作了
但我不明白问题的原因是什么。
这里有一些测试
“\w+([\.\-]?\w+*”
工作正常“\w+([\.\-]\w+*@”
工作正常“\w+([\.\-]?\w+*@”
导致问题@
(这显然会导致正则表达式失败)强制正则表达式引擎尝试所有可能的\w+(\w+*
)排列(因为字符类是可选的)。有了这样一个长度的弦,计算所需的时间将超过宇宙热消亡之前的时间
Firefox似乎对正则表达式有一个迭代限制,并将在大约一百万次尝试后中止,Chrome和IE在这方面似乎更为坚忍