Chrome执行正则表达式匹配时崩溃

时间:2014-12-23 11:36:17

标签: javascript jquery html regex google-chrome

我正在尝试匹配由逗号(,)与正则表达式分隔的50个电子邮件ID,每次我尝试执行此操作时,Chrome崩溃。但是,Safari似乎正在处理它。我正在使用以下代码

var emailValidator = /^([\w+-.%]+@[\w-.]+\.[A-Za-z]{2,4},*[\W]*)+$/;
if(!formData.emailList.match(emailValidator))
    showWarning("Invalid email ids");

有人能告诉我为什么会这样吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

*[\W]*)+

这是因为你的这个组件导致灾难性的回溯。移除它并且它会正常工作。

看到这里由于回溯而失败

https://regex101.com/r/vN3sH3/73

改进

https://regex101.com/r/vN3sH3/74

或以这种方式起草你的正则表达式

^[\w+-.%]+@[\w-.]+\.[A-Za-z]{2,4}(?:,[\w+-.%]+@[\w-.]+\.[A-Za-z]{2,4})*$

参见演示。

https://regex101.com/r/vN3sH3/75