Al buscar datos en un texto, puede utilizar este patrón de búsqueda para describir lo que está buscando. Una expresión regular puede ser único carácter una secuencia o patrón más complejo. Los programadores Javascript o Jquery e incluso diversos lenguajes implementan expresiones regulares.
Así conociendo las reglas o patrones a buscar, no importará el numero de caracteres que contenga la cadena de texto introducida, las expresiones regulares nos proporcionarán una solución muy rápida para determinar si una cadena es una fecha, un e-mail, una dirección web, es numérica para ello sólo deberemos conocer el patrón expresión regular correspondiente.
Veamos un ejemplo de una expresión regular para buscar un determinado carácter:
<html> <head> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <input type="text" name="texto" id="texto"> <button type="button" id="boton">Validar</button> <script> //El boton responde al evento clic $('#boton').click(function() { //Utilizamos una expresión regular para buscar la letra a en la cadena ingresada reg=/a/; //Si a existe mostramos el mensaje if (reg.test($('#texto').val() )) { alert('Existe A'); } else { alert('No existe A'); } }); </script> </body> </html>Utilizando el meta carácter punto(.)
El meta carácter punto permite buscar solo dentro de palabras o contenido que se asignen, por ejemplo
cada punto corresponde a un carácter comodín en la expresión supongamos c..r, una palabra válida sería ciervo ya que cier cumple con la regla ce dos caracteres intermedio entre la c y r
<html> <head> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <input type="text" name="texto" id="texto"> <button type="button" id="boton">Validar</button> <div id="resultado"></div> <script> //El boton desencadena la accion $('#boton').click(function() { //Utilizamos una expresion regular var texto=$('#texto').val(); var reg=/c..r/g; //Se utiliza la funcion test() nativa de JavaScript if (texto.match(reg)) { document.getElementById("resultado").innerHTML = 'Resultado <br>'+texto.match(reg); } }); </script> </body>El meta carácter /W busca caracteres no alfabéticos dentro de una cadena de texto por ejemplo, nos sirve para identificar si en el texto hay un arroba para validar emails.
<html> <head> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <input type="text" name="texto" id="texto"> <button type="button" id="boton">Validar</button> <div id="resultado"></div> <script> //El boton desencadena la accion $('#boton').click(function() { //Utilizamos una expresion regular var texto=$('#texto').val(); var reg=/\W/g; //Se utiliza la funcion test() nativa de JavaScript if (texto.match(reg)) { document.getElementById("resultado").innerHTML = 'Resultado <br>'+texto.match(reg); } }); </script> </body> </html>
Cómo validar un email con expresiones regulares
Para plantear la expresión regular debemos entender que buscamos entonces deberemos tener en cuenta que, el nombre de usuario de email y el dominio o servidor tienen las siguiente características:
- Pueden contener letras o números y no tiene una extensión fija sino que la cantidad de caracteres puede variar.
- Puede contener además de letras y números puntos y guiones y7a sea el nombre de usuario o un subdominio.
Entonces la expresión regular para el nombre de usuario y el dominio sera \w+([\.-]?\w+)*. Utilizando los cuantificadores + y * para los caracteres que se repitan. Los para la extensión del dominio (\.\w{2,3})+ indicando que podrá haber como máximo 3 letras y dos puntos por ejemplo para .com.es.
<html> <head> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> <html> <head> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <input type="text" name="texto" id="texto"> <button type="button" id="boton">Validar</button> <div id="resultado"></div> <script> //El boton desencadena la accion $('#boton').click(function() { //Utilizamos una expresion regular var texto=$('#texto').val(); var reg= /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/; //Se utiliza la funcion test() nativa de JavaScript if (reg.test(texto)) { document.getElementById("resultado").innerHTML = 'Resultado <br>'+texto+' Email valido' ; } else { document.getElementById("resultado").innerHTML = '<br>Email no valido'; } }); </script> </body> </html>l>
Validar si coinciden mayúsculas y minúsculas en una cadena
Podemos comprobar si una cadena esta dentro de otra sin tomar en cuenta si son mayúsculas o minúsculas, recordemos que en linux no es lo mismo una palabra en minúscula que en mayúscula.
Para ello, a la hora de crear la expresion regular, hay que utilizar el indicador para ignorar (i) al final de la expresion regular.
<html> <head> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <div id="resultado"></div> <script> var matriz = new Array(); matriz[0] = "Repuestos Honda"; matriz[1] = "Repuestos Audi"; matriz[2] = "Repuestos Ford"; matriz[3] = "Repuestos ferrari"; // patrón de busqueda var pattern = /Re.*F/i; for (var i = 0; i < matriz.length; i++) { document.getElementById("resultado").innerHTML +='<br>' + matriz[i] + " " + pattern.test(matriz[i],i); } </script> </body> </html>El resultado de esta búsqueda nos mostrara cada elemento y se cumple o no con la regla establecida por lo tanto el resultado será el siguiente:
Repuestos Honda false
Repuestos Audi false
Repuestos Ford true
Repuestos ferrari true
Validar palabras con acentos y la letra ñ
Vamos a crear una función que nos permita validar mediante una expresión regular cualquier palabra que debera acepta los caracteres desde la a hasta la z, tanto en mayúsculas y espacios y debera aceptar las vocales con acento la letra ñ.
<html> <head> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <input type="text" name="texto" id="texto"> <button type="button" id="boton">Validar</button> <div id="resultado"></div> <script> //El boton desencadena la accion $('#boton').click(function() { //Utilizamos una expresion regular var texto=$('#texto').val(); var reg= /^([a-z ñáéíóú]{2,60})$/i; if(reg.test(texto)) { document.getElementById("resultado").innerHTML = 'Resultado <br>'+texto; } else { document.getElementById("resultado").innerHTML = '<br>No valida'; } }); </script> </body>Validar una url de tipo http o https
Veremos aquí como crear una expresión regular para validar dominios o url y que estos tengan una estructura válida.
<html> <head> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <input type="text" name="texto" id="texto"> <button type="button" id="boton">Validar</button> <div id="resultado"></div> <script> //El boton desencadena la accion $('#boton').click(function() { //Utilizamos una expresion regular var texto=$('#texto').val(); var reg= /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \?=.-]*)*\/?$/ if(reg.test(texto)) { document.getElementById("resultado").innerHTML = 'Resultado <br>'+texto; } else { document.getElementById("resultado").innerHTML = '<br>No valida'; } }); </script> </body> </html>Validar y verificar la fortaleza de una contraseña
Aquí deberemos definir previamente que entendemos por una contraseña segura y fuerte para evitar problemas de seguridad, para ello determinamos que una contraseña segura deberá tener las siguientes características:
- La clave escogida deberá contener al menos una letra minúscula.
- La clave escogida deberá contener al menos un número o carácter especial.
- La clave escogida deberá tener al menos como mínimo 8 caracteres.
<html> <head> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <input type="text" name="texto" id="texto"> <button type="button" id="boton">Validar</button> <div id="resultado"></div> <script> //El boton desencadena la accion $('#boton').click(function() { //Utilizamos una expresion regular var texto=$('#texto').val(); var reg= (?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$ if(reg.test(texto)) { document.getElementById("resultado").innerHTML = 'Resultado <br>'+texto; } else { document.getElementById("resultado").innerHTML = '<br>No valida'; } }); </script> </body> </html>Validar si una dirección IP introducida es correcta
Para verificar una dirección ip usaremos la siguiente expresión regular:
<html> <head> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <input type="text" name="texto" id="texto"> <button type="button" id="boton">Validar</button> <div id="resultado"></div> <script> //El boton desencadena la accion $('#boton').click(function() { //Utilizamos una expresion regular var texto=$('#texto').val(); var reg= /^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/ if(reg.test(texto)) { document.getElementById("resultado").innerHTML = 'Resultado <br>'+texto; } else { document.getElementById("resultado").innerHTML = '<br>No valida'; } }); </script> </body> </html>Tabla de Referencia de Meta Caracteres
Meta Carácter | Búsqueda de la expresión regular | Ejemplo |
---|---|---|
^ | Buscar el patrón asignado al inicio de la cadena texto. | /^repuestos/ coincidiría en: “repuestos para autos” |
$ | Buscar el patron asignado al final de la cadena de texto | /autos$/ coincidiría con: repuestos para autos” |
* | Buscar si existe caracteres con una o mas coincidencias. Podemos encontrar errores de texto. | /autos*/ coincidiría con: “autos” y tambien con “aautos” |
? | Busca si esta ninguna o una vez | /au?/ coincidiría con: “autos” |
+ | Busca si coincide una o mas veces | /au+/ coincidiría con: “autos” o automoviles |