Skip to main content
Javascript

Las expresiones regulares más útiles para Javascript

Por 8 septiembre, 2021Sin comentarios
Expresiones regulares con Javascript

Son muchas las ocasiones en las que necesitamos tirar de expresiones regulares (Regex) en nuestro Javascript, para validar datos de entrada como los de un formulario. Por ejemplo, si tenemos un campo de email, necesitaremos comprobar que el dato que ha metido el usuario es un email válido, así evitar posibles conflictos en tu web. Las expresiones regulares más utilizadas sirven para validar emails, fechas, teléfonos, URLs… pero son infinitas las posibilidades. Aquí te dejaré un listado de las más útiles que pueden salvarte en más de una ocasión.

Para validar datos en Javascript con expresiones regulares podemos usar funciones como test(). Por ejemplo:

var cadena = "emaildeprueba@prueba.com"; // Cadena a analizar
var regex  = /^([A-Z|a-z|0-9](\.|_){0,1})+[A-Z|a-z|0-9]\@([A-Z|a-z|0-9])+((\.){0,1}[A-Z|a-z|0-9]){2}\.[a-z]{2,3}$/gm; // Expresión regular

console.log( regex.test(cadena) ); // Devuelve (boolean) true

Existen otras muchas funciones para trabajar con expresiones regulares, como search(), que devuelve el índice de la primera coincidencia o exec(), que devuelve un array con todas las coincidencias dentro de la cadena.

Pero volviendo a lo importante… os dejo un listado de las expresiones regulares más útiles:

// Para validar un email
/^([A-Z|a-z|0-9](\.|_){0,1})+[A-Z|a-z|0-9]\@([A-Z|a-z|0-9])+((\.){0,1}[A-Z|a-z|0-9]){2}\.[a-z]{2,3}$/gm

// Para validar una fecha en formado DD/MM/YYY
^(((0[1-9]|[12][0-9]|3[01])[- /.](0[13578]|1[02])|(0[1-9]|[12][0-9]|30)[- /.](0[469]|11)|(0[1-9]|1\d|2[0-8])[- /.]02)[- /.]\d{4}|29[- /.]02[- /.](\d{2}(0[48]|[2468][048]|[13579][26])|([02468][048]|[1359][26])00))$

// Para validar una fecha en formato YYYY-MM-DD HH:MM:SS
/^(19[0-9]{2}|2[0-9]{3})-(0[1-9]|1[012])-([123]0|[012][1-9]|31) ([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/g

// Para validar si una hora dada esta en formato 24H
/([01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?/g

// Para validar un teléfono en diferentes formatos y con prefijo
/^\s*(?:\+?(\d{1,3}))?([-. (]*(\d{3})[-. )]*)?((\d{3})[-. ]*(\d{2,4})(?:[-.x ]*(\d+))?)\s*$/gm

// Para validar una URL http o https
/[(http(s)?):\/\/(www\.)?a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/ig

// Para validar una IP
/\b(?:(?:2(?:[0-4][0-9]|5[0-5])|[0-1]?[0-9]?[0-9])\.){3}(?:(?:2([0-4][0-9]|5[0-5])|[0-1]?[0-9]?[0-9]))\b/ig

// Para validar si una contraseña es fuerte (de 8 a 64 caracteres con mayúsculas y minúsculas, números y caracteres especiales)
/((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[\W]).{8,64})/g

// Para validar un username de Instagram
/^(?!.*\.\.)(?!.*\.$)[^\W][\w.]{0,29}$/igm

// Comprobar si es un color hexadecimal
/^#?([0-9a-f]{3}){1,2}$/i

// Comprobar si es un color RGB
/rgb\((?:([0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5]), ?)(?:([0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5]), ?)(?:([0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5]))\)/g

// Comprobar si una cadena tiene etiquetas HTML
/\s]+))?)+\s*|\s*)/?>/g

// Comprobar si una cadena tiene sentencias SQL
/"((SELECT|DELETE|UPDATE|INSERT INTO) (\*|[A-Z0-9_]+) (FROM) ([A-Z0-9_]+))( (WHERE) ([A-Z0-9_]+) (=|<|>|>=|<=|==|!=) (\?|\$[A-Z]{1}[A-Z_]+)( (AND) ([A-Z0-9_]+) (=|<|>|>=|<=|==|!=) (\?))?)?"/igm

Al igual que estas, podemos encontrar expresiones regulares para cualquier tipo de patrón o formato. Para acabar, te dejo una herramienta online donde podrás encontrar infinidad de expresiones para tus desarrollos: regexr.com.

Jairo Calero

Desarrollador web frontend y backend, especialista en webs app desarrolladas en PHP y Javascript. Experto en HTML, CSS3, PHP y Javascript con frameworks y librerías como jQuery, Angular y Bootstrap. Gestor de herramientas SEO como Google Analytics, Search Console, SEMrush o Hotjar. Email marketing y Big data.

Deja tu respuesta