estoy usando una extensión de jQuery "contains", se muestra a continuación:expresiones regulares en Javascript con jQuery Contiene expresiones regulares extensión
$.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));
}
});
Tengo una tabla con ciertas células que estoy tratando de formato condicional, por lo Estoy usando la extensión en un selector td
, con la función containsRegex
. El problema con el que me estoy metiendo es que muchas de las expresiones regulares que estoy tratando de usar (que he probado en javascript regex testers como this y que han funcionado) no funcionan con esta función. Estas son las diferentes cadenas que me gustaría para que coincida con:
Tenga en cuenta que una "x" puede ser hacha, T, F o V y una "X" puede ser una X, T, F o V. Por último, un "(mb)" podría ser cualquier dos letras minúsculas az entre paréntesis.
-, (mb), x *, x * (mb), X, X (mb), X *, X * (mb), X
Y aquí es el código con varias de las expresiones regex que estoy usando:
$("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
La mayoría de estos errores pasan en Chrome. ¿Alguien tiene alguna indicación? ¿La extensión contains está limitada de alguna manera?
Gracias de antemano por su ayuda!
Como referencia: el error que pasa es "error no detectada Sintaxis, expresión no reconocida:)/g ')" en "x *" y "X *". Aplica apropiadamente la clase a "(mb)" pero también aplica esas mismas clases para "x * (mb)" ... El resto de las búsquedas no pasan errores, pero tampoco encuentran coincidencias. – mbeasley