我正在尝试匹配由逗号(,)与正则表达式分隔的50个电子邮件ID,每次我尝试执行此操作时,Chrome崩溃。但是,Safari似乎正在处理它。我正在使用以下代码
var emailValidator = /^([\w+-.%]+@[\w-.]+\.[A-Za-z]{2,4},*[\W]*)+$/;
if(!formData.emailList.match(emailValidator))
showWarning("Invalid email ids");
有人能告诉我为什么会这样吗?
提前致谢。
答案 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})*$
参见演示。