Я использую расширение для jQuery " содержит ", как показано ниже:
$.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, таких как this , и они работали), не работаютс этой функцией.Вот различные строки, которые я хотел бы сопоставить:
Обратите внимание, что «x» может быть ax, t, f или v, а «X» может быть X, T, Fили V. Наконец, «(mb)» может быть любыми двумя строчными буквами az в скобках.
-, (mb), x *, x * (mb), x, x (mb), X *, X * (mb), X
А вот код с несколькими операторами регулярных выражений, которые я использую:
$("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.У кого-нибудь есть указатели?Ограничение содержимого каким-либо образом ограничено?
Заранее спасибо за помощь!