Posts Tagged ‘Expresiones Regulares’

Articles

Expresiones regulares en JavaScript

In JavaScript on 09/12/2011 por Esteban Olate Etiquetado: ,

Las expresiones regulares son un mecanismo bastante potente con el cual se pueden manipular cadenas de caracteres, se pueden realizar búsquedas por patrón y reemplazos de cadena, consiste en establecer un patrón (Ejemplo: solo letras, solo números, palabra en específica, etc…) el cual luego se podrá utilizar ya sea para reemplazar una cadena o buscar el patrón dentro de la misma. Las expresiones regulares en JavaScript se basan en las de Perl, por lo que son muy parecidas. JavaScript provee dos formas de crear una expresión regular, a través de un objeto, el objeto RegExp, y a través de una sintaxis especialmente pensada para ello (Crear un String con el siguiente formato: «/<patrón>/».). A continuación una lista de los caracteres, los más usados, que pueden constituir una expresión regular en JavaScript:

Comodines Significado Ejemplo
 \ Marca de carácter especial /\.com/; Busca la cadena «.com».
 ^ Comienzo de una línea /^a/; Cadenas que comienzan con ‘a’.
 $ Final de una línea /a$/; Cadenas que terminen con ‘a’.
 . Cualquier carácter
(menos salto de línea)
/^….$/; Cadenas de 4 caracteres.
| Indica opciones /^a|^1/; Cadenas que comiencen con ‘a’ o con ‘1’.
() Agrupar caracteres /(abc123)/; Busca la cadena ‘abc123’;
[] Conjunto de caracteres
opcionales.
 /[a-z]/; Busca una letra de la ‘a’ a la ‘z’.
Modificadores Significado Ejemplo
* Repetir 0 o más veces /1*234/; Buscaría: «234»,»1234″,»11234″,etc.
+ Repetir 1 o más veces /1+234/; Buscaría: «1234»,»11234″,»111234″,etc.
? 1 o 0 veces /h?ola/; Buscaría: «hola»,»ola».
{n} Exactamente n veces /1{2}234/; Buscaría: «11234»;
{n,} Al menos n veces /1{2,}234/; Buscaría: «11234»,»111234″,»1111234″,etc.
{n,m} Entre n y m veces /1{2,3}234/; Buscaría: «11234»,»111234″.
Especiales Significado Ejemplo
\d Un dígito. /\d/; Busca un dígito del ‘0’ al ‘9’.
\D Alfabético. /\D/; Busca cualquier caracter que no sea un número.
\w Cualquier alfanumérico,
equivalente a [a-zA-Z0-9_ ]
/\w/; Busca un caracter alfanumérico incluyendo el ‘_’.
\W Opuesto a \w /\W/; Busca cualquier caracter que no sea alfanumérico ni ‘_’.
\s Carácter tipo espacio /12\s34/; Buscaría «12 34».
\S Opuesto a \s /12\S34/; Buscaría «1234».
Flags Significado Modo de uso
 g Explora la cadena completa Las Flags se utilizan al final del patrón después de cerrarlo con ‘/’, Ejemplos de uso:»/[a-z]/i»; Buscaría una letra mayúscula o minúscula. Ejemplo:
«Hola»,»hola»,»HOLA»,etc…»/[a-z]*/ix»; Buscaría letras mayúsculas o minúsculas ignorando los espacios en la cadena. Ejemplo:
«Ho la», «ho la», «HO LA»,etc…
 i No distinguir entre
mayúsculas y minúsculas
 m Permite usar varios ^ y $
en el patrón
 s Incluye el salto de linea
en el comodín ‘.’
 x Ignora los espacios
en el patrón

Ahora aquí les dejo unas expresiones regulares y la forma de validar y reemplazar cadenas con JavaScript:

/* Funcion que reemplaza (borra) los espacios en blanco del inicio
 * y final de una cadena. Ejemplo de uso:
 *    la cadena »  hola  » al usar la función trim(»  hola  «);
 *     resultaría «hola».
 */
function trim(cadena){
    var expresionRegular = /^\s+|\s+$/g;
    return cadena.replace(expresionRegular, «»);
}
/* Función que valida si la cadena contiene solo números.
 *  Ejemplo de uso:
 *   Al usar validaSoloNumerico(«1234») : retorna True.
 *   Al usar validaSoloNumerico(«a123») : retorna False.
 */
function validaSoloNumerico(cadena){
    var patron = /^\d*$/;
    if(!cadena.search(patron))
      return true;
    else
      return false;
}
/* Función que valida si la cadena contiene solo números.
 *  Ejemplo de uso:
 *   Al usar validaSoloTexto(«abcd») : retorna True.
 *   Al usar validaSoloTexto(«1abc») : retorna False.
 */
function validaSoloTexto(cadena){
  var patron = /^[a-zA-Z]*$/;
  // En caso de querer validar cadenas con espacios usar: /^[a-zA-Z\s]*$/
  if(!cadena.search(patron))
    return true;
  else
    return false;
}
/* Función que valida si el correo es tiene un formato valido.
 *  Ejemplo de uso:
 *   Al usar validaCorreoElectronico(«aa@aa.cl») : retorna True.
 *   Al usar validaCorreoElectronico(«aa@@aa.cl») : retorna False.
 *   Al usar validaCorreoElectronico(«@aa.cl») : retorna False.
 *   Al usar validaCorreoElectronico(«aa@.cl») : retorna False.
 *   Al usar validaCorreoElectronico(«aa@cl») : retorna False.
 *   Al usar validaCorreoElectronico(«aa@aa») : retorna False.
 *   etc…
 */
function validaCorreoElectronico(correoElectronico){
    var patron = /^([a-z]+[a-z1-9._-]*)@{1}([a-z1-9\.]{2,})\.([a-z]{2,3})$/;
    if(!correoElectronico.search(patron))
      return true;
    else
      return false;
}

Espero les sirva esta pequeña guía.


Esteban Olate