miércoles, 17 de octubre de 2012

22 - El Objeto Regular Expession en Javascript



Interesante: Vídeo Tutorial de Javascript, aprende a programar Javascript desde cero.

JavaScript usa este objeto para trabajar con patrones de expresiones regulares, estos patrones se crean como cualquier otro objeto mediante su inicialización directo o bien mediante el constructor new RegExp(), como podemos ver en el ejemplo:

var mipatron = /^[aeiou]/gi
var mipatron2 = new RegExp("^[aeiou]", "gi")


Ambas formas conducen al mismo patrón, en este ejemplo define palabras que comienzan con una vocal. El patrón puede llevar modificadores o flags para matizar la forma de buscar, en el ejemplo se usan dos: g i Estos modificadores tienen los siguientes sginficados:

g -> Explora la cadena completa
i -> No distinguir mayúsculas de minúsculas
m -> Permite usar varios ^y $ en el patrón
s -> Incluye el salto de línea en el comodín punto .
x -> ignora los espacios en el patrón

Estos patrones poseen en total tres métodos exec(), test(), compile() además de los métodos ya citados del objeto String que también usan patrones como son: match(), replace(), search() y split(). La única propiedad que funciona en estos objetos es la source que refleja el contenido del patrón. En el patrón pueden aparecer caracteres o grupos de caracteres encerrados entre paréntesis, posteriormente podemos usar un índice para referirnos individualmente al contenido de esos paréntesis.
Por ejemplo vamos a sustituir por un - todas los dígitos situados tras una letra en la cadena a explorar.

var cadexp = "234879x089h9y7";
var patron = /([a-z])(\d)/ig;
document.write(cadexp+'<br> ');
cadexp = cadexp.replace(patron, "$2-");
document.write(cadexp)


Como ves donde antes existía un dígito seguido de una letra ahora hay un dígito seguido de un guión. Las coincidencias con el primer paréntesis del patrón están en $1 y con el segundo en $2. La primera coincidencia hallada es x0, luego $1 contiene x y $2 contiene 0, sustituyo lo hallado con -$2, o sea, quito $1 y pongo un guión y me quedará -0 en lugar de x0. Como se ha usado el flag g (global) esta operación se realiza en toda la cadena.