Uncaught SyntaxError: Неверное регулярное выражение в Chrome, FF и IE нормально - PullRequest
1 голос
/ 22 августа 2011

Эта строка кода:

if ( new RegExp("\\b" + arrCategorySort[i]+ "\\b", "g").test(titleText) )
{
    catFound = true;
}

отлично работает в Firefox (6.0) и IE (7.0), но не в Chrome (13.0.782.112)

у вас естьесть идеи почему?

Ответы [ 2 ]

4 голосов
/ 22 августа 2011

Поместите 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 голос
/ 22 августа 2011

Проблема в том, что ваш arrCategorySort[i] в виде строки содержит специальные символы в том, что касается анализатора RegExp (например, {} и []).Когда ваша строка на месте, вы пытаетесь разобрать regexp

 /\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 ... однако {} означает повторный паттерн и ожидаетсяиметь число между ними (или два числа).Что вам действительно нужно, так это экранировать все специальные символы: {}[]|()\,.*+ - добавив символ «\» перед каждым из них.(Может быть, еще пара, ускользает от меня в данный момент.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...