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

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


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

提前致谢。

最佳答案

*[\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

10-06 05:26