Conceptos Fundamentales
Las expresiones regulares (regex o regexp) son patrones de texto que definen cadenas de caracteres. Combinan caracteres ordinarios y metacarácteres para realizar búsquedas, coincidencias y manipulaciones de texto complejas de manera concisa.
Sintaxis Básica
Los metacarácteres ^ y $ marcan el inicio y el final de una cadena, respectivamente. Por ejemplo, ^Patrón busca coincidencias al comienzo, Patrón$ busca al final, y ^Patrón$ exige una coincidencia exacta de toda la cadena.
Los cuantificadores *, + y ? controlan la repetición de un elemento. a* coincide con cero o más "a", a+ con una o más "a", y a? con cero o una "a". Para rangos específicos, se utilizan llaves: a{3} coincide exactamente con tres "a", a{2,4} con entre dos y cuatro "a", y a{2,} con dos o más "a".
El operader | define una alternancia (OR lógico). El patrón gato|perro coincide con "gato" o "perro". Los paréntesis () se usan para agrupar subpatrones. El metacarácter . coincide con cualquier carácter único (excepto una nueva línea en muchos contextos).
Los corchetes [] definen un conjunto de caracteres. [abc] coincied con "a", "b" o "c". [a-z] coincide con cualquier letra minúscula. Un ^ al inicio dentro de los corchetes niega el conjunto: [^0-9] coincide con cualquier carácter que no sea un dígito. Para incluir caracteres literales que normalmente son especiales (como . o *), se escapan con una barra invertida: \..
Patrones de Validación Comunes
A continuación se presentan patrones útiles para validar formatos de datos habituales.
Validación Numérica
| Patrón Regex | Descripción |
|---|---|
^[0-9]+$ |
Solo dígitos (uno o más). |
^\d{n}$ |
Exactamente n dígitos. |
^\d{n,}$ |
Al menos n dígitos. |
^\d{m,n}$ |
Entre m y n dígitos. |
^(0|[1-9]\d*)$ |
Un número entero no negativo sin ceros a la izquierda. |
^-?\d+$ |
Un entero (positivo, negativo o cero). |
^-?\d+(\.\d+)?$ |
Un número de punto flotante (entero o decimal). |
Validación de Caracteres y Cadenas
| Patrón Regex | Descripción |
|---|---|
^[\u4e00-\u9fa5]+$ |
Solo caracteres chinos. |
^[A-Za-z]+$ |
Solo letras (mayúsculas o minúsculas). |
^[A-Z]+$ |
Solo letras mayúsculas. |
^[a-z]+$ |
Solo letras minúsculas. |
^[A-Za-z0-9]+$ |
Letras y números. |
^\w+$ |
Caracteres de palabra (letras, números y guión bajo). |
^.{3,20}$ |
Una cadena de entre 3 y 20 caracteres de cualquier tipo. |
Formatos Específicos
| Patrón Regex | Descripción |
|---|---|
^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$ |
Dirección de correo electrónico. |
^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$ |
URL (formato básico). |
^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$ |
Número de teléfono móvil (ejemplo para ciertas regiones). |
^\d{4}-\d{1,2}-\d{1,2} |
Fecha en formato AAAA-MM-DD. |
^\d{15}$|^\d{18}$|^\d{17}(\d|X|x)$ |
Número de identificación (ejemplo para 15 o 18 dígitos). |
^[a-zA-Z][a-zA-Z0-9_]{4,15}$ |
Nombre de usuario (empieza con letra, 5-16 caracteres alfanuméricos o guion bajo). |
Aplicación en Desarrollo Web
Validación en Formularios HTML
Se puedan utilizar expresiones regulares en el atributo pattern de los elementos <input> de HTML5 para la validación del lado del cliente.
<!-- Solo permite números -->
<input type="text" id="campoNumero" pattern="\d*" title="Solo se permiten números">
<!-- Permite letras y números -->
<input type="text" id="campoAlfanumerico" pattern="[A-Za-z0-9]+" title="Solo letras y números">
Uso en JavaScript
En JavaScript, se crean objetos RegExp o se usan literales entre barras (/patrón/) para realizar coincidencias con métodos como test() o exec().
function validarSoloDigitos(texto) {
const patron = /^\d+$/;
return patron.test(texto);
}
function validarFormatoCorreo(correo) {
// Patrón simplificado para demostración
const patron = /^[\w.-]+@[\w.-]+\.\w+$/;
return patron.test(correo);
}
// Ejemplo de uso para extraer información
const url = "https://ejemplo.com/pagina?id=123";
const patronParametro = /[?&]id=(\d+)/;
const coincidencia = url.match(patronParametro);
if (coincidencia) {
console.log("ID encontrado:", coincidencia[1]); // Salida: "123"
}
Las expresiones regulares son una herramienta poderosa pero que puede volverse compleja. Es recomendable probar los patrones rigurosamente con diferentes casos de entrada y utilizar herramientas de depuración o sitios especializados para su validación.