我正在检查一个值,无论它是emailid还是不使用下面的代码。

function getEmailId(inputTxt){
    var email = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
    return new RegExp(email).test(inputTxt);
}


var sTime = new Date();
var a = getEmailId("[email protected]");

console.log("value>>>>"+a+">>>time>>>>"+(new Date()-sTime));


大约需要55秒。给上面的输入结果,如果我将其更改为

var a = getEmailId("[email protected]");


大约需要3.5秒才能得出结果。

我无法理解这种行为。

任何人都可以帮助我了解这种行为,并且有任何可能的方法可以立即获得结果。

最佳答案

^\w+[.\w-]*\w+@\w+[.\w-]*\w+(\.\w{2,3})+$


您可以简单地使用它而不会遇到catastrophic backtracking

See demo.

09-26 07:31