Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Según wikipedia: Una expresión regular, a menudo llamada también regex, es una secuencia de
caracteres que forma un patrón de búsqueda, principalmente utilizada para la búsqueda de
patrones de cadenas de caracteres u operaciones de sustituciones.
Imaginemos que queremos incluir en el típico formulario de alta que algunos de los campos como
nombre, apellidos, email, usuario y contraseña pasen una validación de cadena.
Pongamos una serie de condiciones previas para cada uno de los campos:
<div>
<label for="nombre">Nombre</label>
pattern="[a-zA-
ZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųūÿýżźñçčšžÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁŃÒÓÔÖÕ
ØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ∂ð ,.'-]
{2,48}" required/>
</div>
<div>
<label for="apellidos">Apellidos</label>
pattern="[a-zA-ZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųūÿýżźñçčšžÀÁÂÄÃÅĄ
</div>
pattern="^([a-zA-Z0-9_-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|
(([a-zA-Z0-9-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$" required/>
</div>
<div>
<label for="usuario">Usuario</label>
pattern="^([a-z]+[0-9]{0,2}){5,12}$" required/>
</div>
Password: Por último vamos a solicitar una cadena como contraseña, la cual podrá contener letras
mayúsculas, minúsculas, números y los caracteres !?-. Su tamaño: entre 8 y 12 caracteres.
<div>
<label for="pass">Contraseña</label>
</div>
Con este sencillo código hemos puesto un ejemplo de formulario que simplemente no realizará el
envío de datos hasta que todas las condiciones no se cumplan. Obviamente todos estos campos
deberán de encontrarse dentro de un formulario HTML para funcionar.
Sin embargo no nos vamos a detener aquí. Vamos a comprobar cómo podemos utilizar CSS para
advertir al usuario si el contenido del campo es válido o no.
Añadiendo un poco de CSS podemos hacer que sea un poco más vistoso el resultado válido al
introducir un campo.
input:valid {
background-color: #BBFFF0;
Como ya he hablado en otros posts soy un gran fan de las webfonts, que nos permiten incluir
diseño gráfico de forma muy sencilla, fácilmente reutilizables y con una muy baja penalización en
el rendimiento web.
Nuevamente voy a volver a utilizar CSS y Font Awesome para incluir algo más vistoso en la
validación. Para ello incluyo en el header la página un link a Font Awesome.
A continuación incluyo el siguiente código HTML después de cada input, con el icono check que
me proporciona Font Awesome.
Por último solo quedan incluir las siguientes lineas CSS que me permiten por medio del selector de
siblings (hermanos o parientes) mostrar el check cuando el contenido del input sea válido u
ocultarlo cuando no.
.check-ok {
color: lime;
input:invalid ~ .check-ok {
display: none;
}
input:valid ~ .check-ok {
display: inline;
CONCLUSIÓN
En este artículo hemos podido ver cómo las nuevas posibilidades de añadir validación con
expresiones regulares en HTML5 a los campos de formulario han mejorado bastante las
posibilidades y ya no hacen tan imprescindible el uso de JavaScript en formularios pequeños. Sin
embargo, ¿esto hace innecesario JavaScript? Personalmente opino que no, salvo en formularios
muy sencillos como este. Paso a argumentar dicha opinión.
Se mezclan las capas de validación y presentación en nuestro código. Algo que prefiero
mantener diferenciado teniendo por un lado la capa de presentación en HTML y la
validación con programación Javascript.
Existen algunos tipos de validaciones que exigen programación. Funciones como por
ejemplo la típica en el que se nos solicita incluir dos veces una contraseña para su
cotejamiento con otro campo del formulario anterior, que sólo es posible realizar por
JavaScript dado que requiere una comparación con otro valor.
Exige estar repitiendo una y otra vez los patrones en cada campo aunque sean los
mismos.Algo que en las librerías de JavaScript está mucho mejor resuelto. Existen
numerosas librerías, muchas de ellas basadas en jQuery, y que hacen incluso más sencilla
la implementación de validación en formularios sin la necesidad de conocer expresiones
regulares.
En cualquier caso aquí dejo el ejemplo y mis reflexiones por si a alguien le interesa. Estoy abierto a
vuestras opiniones y comentarios.
Validación con expresiones
regulares y Javascript
09 de Enero de 2007 / 27 Comentarios / JAVASCRIPT, TUTORIALES
Las expresiones regulares son modelos que describen las combinaciones de
caracteres en el texto. Se podrían definir como una serie de carácteres que forman un
patrón, que representan a otro grupo de carácteres mayor, de tal forma que podemos
comparar el patrón con otros conjuntos de carácteres para ver las coincidencias. Las
expresiones regulares pueden utilizarse en múltiples lenguajes de programación pero
en esta entrada vamos a ver un ejemplo de validación de formularios mediante
Javascript y haciendo uso de expresiones regulares.
El carácter anterior una vez como máximo (es decir, indica que el carácter anterior es
?
opcional).
x|y x o y.
Cualquiera de los caracteres entre corchetes. Especifique un rango de caracteres con un guión
[abc]
(por ejemplo, [a-f] es equivalente a [abcdef]).
Cualquier carácter que no esté entre corchetes. Especifique un rango de caracteres con un
[^abc]
guión (por ejemplo, [^a-f] es equivalente a [^abcdef]).
\f Salto de página.
\n Salto de línea.
\r Retorno de carro.
\t Tabulación.
La tabla siguiente contiene algunos de los patrones más utilizados a la hora de validar
formularios. Si alguien conoce alguna expresión regular más -que pueda ser útil en la
validación de formularios- la puede poner en los comentarios y yo la incorporaré a
esta tabla.
Entero ^(?:\+|-)?\d+$
Fecha ^\d{1,2}\/\d{1,2}\/\d{2,4}$
(Por ejemplo 01/01/2007)
Hora ^(0[1-9]|1\d|2[0-3]):([0-5]\d):([0-5]\d)$
(Por ejemplo 10:45:23)
Un ejemplo para controlar que la clave que se introduce sea segura podría ser:
<html >
<head>
<title></title>
<script type="text/javascript">
<!--
function validatePass(campo) {
} else {
alert(errorMessage);
campo.focus();
//-->
</script>
</head>
<body>
<br>
</form>
</body>
</html>
¿Qué son las expresiones regulares?
Odiadas por unos, adoradas por otros… en cualquier caso las expresiones regulares son
siempre útiles y necesarias para validar todo tipo de datos, buscar, encontrarcoincidencias en
cadenas de texto y mucho más.
Si tuviéramos que dar una definición de forma técnica, una expresión regular (o patrón) es
una expresión que describe un conjunto de cadenas sin enumerar sus elementos.
Así pues en una búsqueda de dos caracteres concretos, no importará si número de caracteres
es 10 o un millón, las expresiones regulares nos porporcionarán una solución al problema.
Además de buscar, también podremos saber si una cadena es una fecha, un e-mail, una
dirección web… tan sólo deberemos conocer el patrón necesario a escribir.
A continuación compartimos con todos vosotros 10 expresiones regulares que a buen seguro
usaréis en más de una ocasión y que serán siempre útiles en vuestros proyectos web.
1. Validar una URL
¿Quieres saber si una dirección web es válida? No hay problema con esta expresión regular lo
tendremos muy fácil:
1. /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \?=.-]*)*\/?$/
2. Validar un E-mail
En muchas ocasiones necesitaremos saber si un e-mail con el que se trata de registrar un
usuario es válido:
1. ^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$