Regular expressions and data validation in forms

Expresiones regulares y validación de datos en formularios

¿Qué son las expresiones regulares y cómo utilizarlas?

Una expresión regular, o regex para abreviar, es un patrón que describe una cantidad determinada de texto. Por ejemplo, si desea asegurarse de que quien completa un formulario envíe exactamente el texto requerido, puede usar una expresión regular para imponer un patrón específico en la entrada o para validar los datos.

Por ejemplo, supongamos que desea solicitar un Número de la Seguridad Social del Reino Unido (NIN). Este tiene un patrón de 2 caracteres, seguidos de 6 dígitos y, a continuación, de otro carácter. Una expresión regular que corresponde a este patrón sería:

[az|AZ]{2}[0-9]{6}[az|AZ]

Aquí [az] significa "cualquier carácter en minúscula", [AZ] significa "cualquier carácter en mayúscula", | significa o, entonces [az|AZ] significa "cualquier carácter", {2} significa "repetir dos veces", etc.

Algunos gobiernos proporcionan expresiones regulares para patrones de uso común. Por ejemplo, consulte este artículo de Wikipedia sobre los códigos postales del Reino Unido.

Para obtener una hoja de trucos rápida sobre expresiones regulares, busque una 'Guía de expresiones regulares' o siga leyendo.

Personaje

Leyenda

Ejemplo

Coincidencia de muestra

\d

La mayoría de los motores: un dígito
de 0 a 9

archivo_\d\d

archivo_25

\d

.NET, Python 3: un dígito Unicode en cualquier script

archivo_\d\d

archivo_9

\w

La mayoría de los motores: "carácter de palabra": letra ASCII, dígito o guión bajo

\w-\w\w\w

A-b_1

\w

.Python 3: "carácter de palabra": letra Unicode, ideograma, dígito o guión bajo

\w-\w\w\w

字-ま_۳

\w

.NET: "carácter de palabra": letra Unicode, ideograma, dígito o conector

\w-\w\w\w

字-ま‿۳

\s

La mayoría de los motores: "carácter de espacio en blanco": espacio, tabulación, nueva línea, retorno de carro, tabulación vertical

a\sb\sc

desde
do

\s

.NET, Python 3, JavaScript: "carácter de espacio en blanco": cualquier separador Unicode

a\sb\sc

desde
do

\D

Un carácter que no es un dígito según lo definido por el \d de su motor

\D\D\D

abecedario

\W

Un carácter que no es un carácter de palabra según lo definido por el \w de su motor

\W\W\W\W\W

*-+=)

\S

Un carácter que no sea un carácter de espacio en blanco según lo definido por el \s de su motor

\S\S\S\S

Yoyó

Cuantificadores

Cuantificador

Leyenda

Ejemplo

Coincidencia de muestra

+

Uno o más

Versión \w-\w+

Versión A-b1_1

{3}

Exactamente tres veces

\D{3}

abecedario

{2,4}

De dos a cuatro veces

\d{2,4}

156

{3,}

Tres o más veces

\w{3,}

tutorial de expresiones regulares

*

Cero o más veces

ABECEDARIO*

AAACC

?

Una vez o ninguna

¿plurales?

plural

Más personajes

Personaje

Leyenda

Ejemplo

Coincidencia de muestra

.

Cualquier carácter excepto salto de línea

C.A

abecedario

.

Cualquier carácter excepto salto de línea

.*

Lo que sea, hombre.

\ .

Un punto (carácter especial: debe escaparse con un \)

C.A

C.A

\

Escapa de un carácter especial

\.\*\+\? \$\^\/\\

.*+? $^/\

\

Escapa de un carácter especial

\[\{\(\)\}\]

[{()}]

Lógica

Lógica

Leyenda

Ejemplo

Coincidencia de muestra

|

Alternancia / operando OR

22|33

33

( … )

Grupo de captura

Una(hormiga|manzana)

Apple (captura "pple")

\1

Contenido del Grupo 1

r(\w)g\1x

expresiones regulares

\2

Contenido del Grupo 2

(\d\d)\+(\d\d)=\2\+\1

12+65=65+12

(?: … )

Grupo que no captura

A(?:nt|manzana)

Manzana

Más espacios en blanco

Personaje

Leyenda

Ejemplo

Coincidencia de muestra

\t

Pestaña

T_t_w{2}

Pestaña

\r

Carácter de retorno de carro

vea abajo

\norte

Carácter de avance de línea

vea abajo

\r\n

Separador de línea en Windows

AB\r\nCD

AB
CD

\NORTE

Perl, PCRE (C, PHP, R…): un carácter que no sea un salto de línea

\N+

abecedario

\h

Perl, PCRE (C, PHP, R…), Java: un carácter de espacio horizontal: tabulación o separador de espacio Unicode

\H

Un carácter que no sea un espacio horizontal

\v

.NET, JavaScript, Python, Ruby: pestaña vertical

\v

Perl, PCRE (C, PHP, R…), Java: un carácter de espacio vertical: avance de línea, retorno de carro, tabulación vertical, avance de página, separador de párrafo o línea

\V

Perl, PCRE (C, PHP, R…), Java: cualquier carácter que no sea un espacio vertical

\R

Perl, PCRE (C, PHP, R…), Java: un salto de línea (par retorno de carro + avance de línea y todos los caracteres coincidentes con \v)

Más cuantificadores

Cuantificador

Leyenda

Ejemplo

Coincidencia de muestra

+

El + (uno o más) es "codicioso"

\d+

12345

?

Hace que los cuantificadores sean "perezosos"

\d+?

1 en 1 2345

*

El * (cero o más) es "codicioso"

A*

AAA

?

Hace que los cuantificadores sean "perezosos"

A*?

vacío en AAA

{2,4}

De dos a cuatro veces, "codicioso"

\w{2,4}

abcd

?

Hace que los cuantificadores sean "perezosos"

\w{2,4}?

ab en ab cd

Clases de personajes

Personaje

Leyenda

Ejemplo

Coincidencia de muestra

[ … ]

Uno de los personajes entre paréntesis

[AEIOU]

Una vocal mayúscula

[ … ]

Uno de los personajes entre paréntesis

T[ao]p

Toque o Top

-

Indicador de rango

[Arizona]

Una letra minúscula

[xy]

Uno de los caracteres en el rango de x a y

[AZ]+

EXCELENTE

[ … ]

Uno de los personajes entre paréntesis

[AB1-5w-z]

Uno de los siguientes: A, B, 1, 2, 3, 4, 5, w, x, y, z

[xy]

Uno de los caracteres en el rango de x a y

[ -~]+

Caracteres en la sección imprimible de la tabla ASCII .

[^x]

Un personaje que no sea x

[^az]{3}

¡A1!

[^xy]

Uno de los caracteres que no está en el rango de x a y

[^ -~]+

Caracteres que no están en la sección imprimible de la tabla ASCII .

[\d\D]

Un carácter que es un dígito o no es un dígito

[\d\D]+

Cualquier personaje, inc-
Incluyendo nuevas líneas, con las que el punto regular no coincide.

[\x41]

Coincide con el carácter en la posición hexadecimal 41 en la tabla ASCII, es decir, A

[\x41-\x45]{3}

ABE


Anclas y límites

Ancla

Leyenda

Ejemplo

Coincidencia de muestra

^

Inicio de cadena o inicio de línea , según el modo multilínea. (Pero cuando [^entre corchetes], significa "no")

^abc .*

abc (inicio de línea)

$

Fin de cadena o fin de línea según el modo multilínea. Numerosas sutilezas dependientes del motor.

.*? el fin$

Este es el final

\A

Comienzo de la cadena
(todos los motores principales excepto JS)

\Aabc[\d\D]*

abc (cadena...
...comenzar)

\z

Al final de la cuerda
No disponible en Python y JS

el fin\z

este es...\n... el final

\Z

Fin de cadena o (excepto Python) antes del salto de línea final
No disponible en JS

el final\Z

esto es...\n... el final \n

\GRAMO

Inicio de la cadena o fin de la coincidencia anterior
.NET, Java, PCRE (C, PHP, R…), Perl, Ruby

\b

Límite de palabras
La mayoría de los motores: posición donde solo un lado es una letra ASCII, un dígito o un guión bajo

Bob.*\bcat\b

Bob se comió al gato

\b

Límite de palabras
.NET, Java, Python 3, Ruby: posición donde solo un lado es una letra Unicode, un dígito o un guión bajo

Bob.*\b\кошка\b

Bob se comió la кошка

\B

No hay límite de palabras

c.*\Bcat\B.*

imitadores

Utilizamos cookies para mejorar su experiencia de navegación y analizar el tráfico del sitio. Al hacer clic en "Aceptar", consiente nuestro uso de cookies. Política de privacidad