Utilizar el objeto RegExp
oRegExp = new RegExp("azul", "gi");
oRegExp = /azul/gi; notación tipo Perl
g = (global) compara todas las coincidencias, nos solo la primera
i = (ignoreCase) el patrón no distingue entre may y min
var aMatches = oRegExp.exec(cadena); devuelve una matriz con un solo elemento
var aMatches = cadena.match(oRegExp);devuelve una matriz con todas las coinciedencias en la cadena
var indice = cadena.search(oRegExp); índice de la 1ª instancia en la cadena (parecido a indexOf())
Métodos de cadena que aceptan expresiones regulares: replace
var sTextoReemplazado = cadena.replace(oRegExp, "rojo"); genera el mismo resultado que
var sTextoReemplazado = cadena.replace(oRegExp, function(sMatch){
return "blue";}
); genera el mismo resultado que
var sTextoReemplazado = cadena.replace("azul", "rojo");
Métodos de cadena que aceptan expresiones regulares: split
var array = cadena.split(","); genera el mismo resultado que
var oRegExp = /\,/;
var array = cadena.split(oRegExp);
Metacaracteres de expresiones regulares se escapan con \
( [ { \ ^ $ | ) ? * + . ,
\\t, \\n, \\r, \\0 tabulación, nueva línea, retorno de carro y carácter Null, respectivamente
Clases de caractéres (caracteres entre corchetes[])
oRegExp = /[abc]dar/gi; clase sencilla: cadenas que empiezan por a, b ó c y terminan con dar
oRegExp = /[^abc]dar/gi; clase de nagación (^:acento circunflejo): cadenas que no empiezan por a, b ó c y si terminan con dar
oRegExp = /numero[1-4]/gi; clase de intervalo (-)
oRegExp = /[a-m1-4\n]/gi; clase de combinación: cadenas que empiezan entre la a y la m, entre el 1 y el 4, y el carácter de nueva línea
Clases predefinidas
. = [^\n\r] cualquier caracter menos los de nueva línea y retorno de carro
\d = [0-9] un dígito
\D = [^0-9] un valor que no sea dígito
\s = [ \t\n\x0B\f\r] carácter de espacio en blanco
\S = [^\t\n\x0B\f\r] carácter que no sea espacio en blanco
\w = [a-zA-Z_0-9] un carácter de palabra, letras números y guión bajo
\W = [^a-zA-Z_0-9] un carácter que no sea de palabra
Cuantificadores: cuantas veces debe repetirse un patrón
? = una o ninguna instancia
* = cero o más instancias
+ = una o más instancia
{n} = exactamente n instancias
{n,m} = al menos n pero no más de m instancias
{n,} = al menos n instancias
Agrupar: procesando secuencias de caracteres (hasta ahora se aplicaban a caracteres individuales)
var oRegExp = /micmic/g; genera el mismo resultado que
var oRegExp = /(mic){2}/g;
var oRegExp = /(azul( y rojo)?)/; encuentra "azul" o "azul y rojo"
Límites
^ = inicio de línea
$ = final de línea
\b = límite de palabra
\B = límite que no es de palabra
Ejemplo de lo visto hasta ahora: crear un método trim()
String.prototype.trim = function(){
var oRegExp = /^\s+(.*?)\s+$/;
return this.replace(oRegExp, "$1");
};
var sText = " texto de ejemplo ";
alert(sText.trim());