Javascript Регулярные выражения с расширением jQuery Contains Regex

Я использую расширение для jQuery "contains", показанное ниже:

$.extend($.expr[':'],{
    containsExact: function(a,i,m){
        return $.trim(a.innerHTML.toLowerCase()) === m[3].toLowerCase();
    },
    containsExactCase: function(a,i,m){
        return $.trim(a.innerHTML) === m[3];
    },
    containsRegex: function(a,i,m){
        var regreg =  /^\/((?:\\\/|[^\/])+)\/([mig]{0,3})$/,
        reg = regreg.exec(m[3]);
        return RegExp(reg[1], reg[2]).test($.trim(a.innerHTML));
    }
});

У меня есть таблица с определенными ячейками, которые я пытаюсь условно отформатировать, поэтому я использую расширение в селекторе td с функцией containsRegex. Проблема, с которой я столкнулся, заключается в том, что многие регулярные выражения, которые я пытаюсь использовать (которые я тестировал на javascript regex-тестерах, таких как this, и они работали), не работают с этой функцией. Вот различные строки, которые я хотел бы подобрать:

Обратите внимание, что "x" может быть x,t,f или v, а "X" может быть X,T,F или V. Наконец, "(mb)" может быть любыми двумя строчными буквами a-z в скобках.

-, (mb), x*, x*(mb), x, x(mb), X*, X*(mb), X

А вот код с несколькими операторами regex, которые я использую:

 $("td:containsExact('-')").addClass("0 queue"); // -
 $("td:containsRegex('/[^xtfv*]\([a-z]{2}\)/g')").addClass("1 active"); // (mb)
 $("td:containsRegex('/\b[xtfv]\*(?!\()/g')").addClass("2 queue review"); // x*
 $("td:containsRegex('/\b[xtfv]\*(?:\([a-z]{2}\))/g')").addClass("3 active review"); // x*(mb)
 $("td:containsRegEx('/\b[xtfv](?![*\(])/g')").addClass("4 queue");  // x
 $("td:containsRegEx('/\b[xtfv](?:\([a-z]{2}\))/g')").addClass("5 active");  // x(mb)
 $("td:containsRegEx('/\b[XTFV]\*(?!\()/g')").addClass("6 queue review");  // X*
 $("td:containsRegEx('/\b[XTFV]\*(?:\([a-z]{2}\))/g')").addClass("7 active review");  // X*(mb)
 $("td:containsRegEx('/\b[XTFV](?![*\(])/g')").addClass("8 done");  // X

Большинство из них выдают ошибки в Chrome. Есть ли у кого-нибудь какие-нибудь подсказки? Может быть, расширение contains как-то ограничено?

Заранее спасибо за помощь!

7
задан mbeasley 18 January 2012 в 18:50
поделиться