这行代码:
if ( new RegExp("\\b" + arrCategorySort[i]+ "\\b", "g").test(titleText) )
{
catFound = true;
}
在Firefox(6.0)和IE(7.0)中运行良好,但在Chrome(13.0.782.112)中运行不正确
你知道为什么吗?
答案 0 :(得分:4)
在代码周围放置一个try / catch并显示导致异常的值:
try {
if ( new RegExp("\\b" + arrCategorySort[i]+ "\\b", "g").test(titleText) )
catFound = true;
}
catch (e) {
confirm (e + ' : at index ' + i + ', category is "' + arrCategorySort[i] + '"');
}
答案 1 :(得分:1)
问题是,对于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 ...
{}
{}[]|()\,.*+
{{1}}表示重复模式,并希望它们之间有一个数字(或两个数字)。你真正需要的是逃避所有特殊的字符:{{1}} - 在每个字符前加上'\'字符。 (可能还有一些,目前让我逃脱。)