我试图用正则表达式匹配 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})*$
查看演示。
关于javascript - Chrome 在执行正则表达式匹配时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27619583/