[英]Uncaught SyntaxError: Invalid regular expression in Chrome, FF and IE fine
这行代码:
if ( new RegExp("\\b" + arrCategorySort[i]+ "\\b", "g").test(titleText) )
{
catFound = true;
}
在Firefox(6.0)和IE(7.0)中都能完美运行,但在Chrome(13.0.782.112)中却不能
你知道为什么吗?
尝试/捕获代码,并显示引起异常的值:
try {
if ( new RegExp("\\b" + arrCategorySort[i]+ "\\b", "g").test(titleText) )
catFound = true;
}
catch (e) {
confirm (e + ' : at index ' + i + ', category is "' + arrCategorySort[i] + '"');
}
问题是,就RegExp解析器而言,您的arrCategorySort[i]
作为字符串包含特殊字符(例如{}
和[]
)。 将字符串放在适当的位置,您正在尝试解析正则表达式
/\bfunction (a,b){var c=b||window,d=[];for(var e=0,f=this.length;e<f;++e){if(!a.call(c,this[e],e,this))continue;d.push(this[e])}return d}\b/
在(a,b)
开头之后,在{}
您有var ...
但是{}
表示重复的模式,期望它们之间有一个数字(或两个数字)。 您真正需要的是转义所有特殊字符: {}[]|()\\,.*+
-通过在每个字符前面加上'\\'字符。 (可能还有更多,此刻使我逃脱了。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.