我正在尝试将由逗号(,)分隔的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