Sintaxis de expresiones regulares

Una expresión regular describe una o más cadenas que deben coincidir al buscar en un cuerpo de texto. La expresión actúa como una plantilla que busca un modelo de caracteres en la cadena en la que se busca.

Una expresión regular está formada por caracteres ordinarios (por ejemplo, las letras de la a a la z) y caracteres especiales, conocidos como metacaracteres.

Caracteres especiales

La tabla siguiente contiene la lista completa de metacaracteres de carácter único y su comportamiento en el contexto de las expresiones regulares.

Nota

Para buscar coincidencias con estos caracteres especiales, primero debe especificar un carácter de escape, es decir, precédalos por una barra diagonal inversa (\). Por ejemplo, para buscar el carácter literal "+", puede utilizar una expresión "\+".

Metacaracteres

Comportamiento

Ejemplo

*

Coincide cero o más veces con el carácter o subexpresión anterior.

Equivalente a {0,}.

zo* coincide con "z" y "zoo"

+

Coincide una o más veces con el carácter o subexpresión anterior.

Equivalente a {1,}.

zo+ coincide con "zo" y "zoo", pero no con "z."

?

Coincide una vez o ninguna con el carácter o subexpresión anterior.

Equivalente a {0,1}.

When ? inmediatamente sigue cualquier otro cuantificador (*, +?, {n}, {n} o {n,m}), el modelo coincidente es no expansivo. Un modelo no expansivo coincide con el mínimo posible de la cadena buscada. El modelo no expansivo predeterminado coincide con el máximo posible de la cadena buscada.

zo? coincide con "z" y "zo", pero no con "zoo".

o+? coincide con una "o" única de "oooo" y o+ coincide con todas las "o".

do(es)? coincide con "do" en "do" o "does".

^

Coincide con la posición de inicio de la cadena buscada. Si el carácter m (búsqueda de múltiples líneas) está incluido con las marcas, ^ también coincide con la posición siguiente de \n o \r.

Cuando se utiliza como primer carácter de una expresión entre corchetes, ^ niega el juego de caracteres.

^\d{3} coincide con 3 dígitos numéricos del inicio de la cadena buscada.

[^abc] coincide con cualquier carácter excepto a, b y c.

$

Coincide con la posición de fin de la cadena buscada. Si el carácter m (búsqueda de múltiples líneas) está incluido con las marcas, ^ también coincide con la posición anterior de \n o \r.

\d{3}$ coincide con 3 dígitos numéricos del final de la cadena buscada.

.

Coincide con cualquier carácter individual excepto con el carácter de nueva línea \n. Para buscar coincidencias con cualquier carácter, incluido \n, utilice un modelo como [\s\S].

a.c coincide con "abc", "a1c" y "a-c".

[]

Marca el inicio y el final de una expresión entre corchetes.

[1-4] coincide con "1", "2", "3" o "4." [^aAeEiIoOuU] busca cualquier carácter no vocálico.

{}

Marca el inicio y el final de una expresión de cuantificadores.

a{2,3} coincide con "aa" y "aaa."

()

Marca el inicio y el final de una subexpresión. Las subexpresiones pueden guardarse para uso posterior.

A(\d) coincide con "A0" a "A9." El dígito se guarda para uso posterior.

|

Indica una opción entre dos o más elementos.

z|food coincide con "z" o "food" (z|f)ood coincide con "zood" o "food".

/

Denota el comienzo o el fin de un modelo de expresión regular literal de JScript. Después del segundo "/", se pueden agregar marcas de carácter único para especificar el comportamiento de la búsqueda.

/abc/gi es una expresión regular literal de JScript que coincide con "abc". La marca g (global) especifica la búsqueda de todas las apariciones del modelo e i (no distinguir mayúsculas de minúsculas) hace la búsqueda sin distinción entre mayúsculas y minúsculas.

\

Marca el siguiente carácter como un carácter especial, un literal, una referencia inversa o un valor de escape octal.

\n coincide con un carácter de nueva línea. \( coincide con "(". \\ coincide con "\".

La mayoría de los caracteres especiales pierden su significado y representan caracteres ordinarios cuando se incluyen en una expresión entre corchetes. Para obtener más información, vea "Caracteres en expresiones entre corchetes" en Listas de caracteres coincidentes.

Metacaracteres

La tabla siguiente contiene la lista completa de metacaracteres de carácter múltiples y su comportamiento en el contexto de las expresiones regulares.

Metacaracteres

Comportamiento

Ejemplo

\b

Coincide con el límite de una palabra, es decir, la posición entre una palabra y un espacio.

er\b coincide con "er" en "never", pero no coincide con "er" en "verb".

\B

Coincide con una posición que no es un límite de palabra.

er\B coincide con "er" en "verb", pero no coincide con "er" en "never".

\d

Coincide con un dígito.

Equivalente a [0-9].

En la cadena "12 345" buscada, \d{2} coincide con "12" y "34". \d coincide con "1", "2", "3", "4" y "5".

\D

Coincide con un carácter que no sea un dígito.

Equivalente a [^0-9].

\D+ coincide con "abc" y " def" en "abc123 def".

\w

Coincide con cualquiera de los siguientes caracteres: A-Z, a-z, 0-9 y subrayado.

Equivalente a [A-Za-z0-9_].

En la cadena buscada "The quick brown fox...", \w+ coincide con "The", "quick", "brown", and "fox".

\W

Coincide con cualquier carácter excepto A-Z, a-z, 0-9 y subrayado.

Equivalente a [^A-Za-z0-9_].

En la cadena buscada "The quick brown fox...", \W+ coincide con "…" y todos los espacios.

[xyz]

Un juego de caracteres. Coincide con cualquiera de los caracteres especificados.

[abc] coincide con la "a" de "plain".

[^xyz]

Un juego de caracteres negativo. Coincide con cualquier carácter que no se especifique.

[^abc] coincide con la "p", "l", "i" y "n" de "plain".

[a-z]

Un intervalo de caracteres. Coincide con cualquier carácter del intervalo especificado.

[a-z] coincide con cualquier carácter alfabético en minúsculas de la 'a' a la 'z'.

[^a-z]

Un intervalo negativo de caracteres. Coincide con cualquier carácter que no se encuentre en el intervalo especificado.

[^a-z] coincide con cualquier carácter que no se encuentre en el intervalo "a" a "z".

{n}

Coincide exactamente n veces. n es un entero no negativo.

o{2} no coincide con la 'o' de "Bob", pero coincide con las dos "o" de "food".

{n,}

Coincide como mínimo n veces. n es un entero no negativo.

* es equivalente a {0,}.

+ es equivalente a {1,}.

o{2,} no coincide con la 'o' de "Bob", pero coincide con todas las "o" de "food".

{n,m}

Coincide n veces como mínimo y m veces como máximo. n y m son enteros no negativos donde n < = m. No puede haber un espacio entre la coma y los números.

? es equivalente a {0,1}.

En la cadena buscada"1234567", \d{1,3} coincide con "123", "456" y "7".

(modelo)

Coincide con modelo y guarda la coincidencia. Puede recuperar la coincidencia guardada de los elementos de matriz devueltos por exec Method en JScript. Para que coincidan los paréntesis ( ), utilice "\(" o "\)".

(Chapter|Section) [1-9] coincide con "Chapter 5" y "Chapter" se guarda para uso posterior.

(?:modelo)

Coincide con modelo, pero que no guarda la coincidencia, es decir, no se almacena para un posible uso posterior. Esto resulta útil cuando se combinan partes de un modelo con el carácter disyuntivo "or" (|).

industr(?:y|ies) es equivalente a industry|industries.

(?=modelo)

Búsqueda anticipada positiva. Una vez que se encuentra una coincidencia, la búsqueda de la siguiente coincidencia se inicia antes del texto coincidente. La coincidencia no se guarda para uso posterior.

^(?=.*\d).{4,8}$ aplica la restricción de que las contraseñas deben tener entre 4 y 8 caracteres y contener un dígito por lo menos.

Dentro del modelo, .*\d encuentra cualquier número de caracteres seguido por un dígito. En la cadena de búsqueda "abc3qr", coincide con "abc3."

Antes, y no después, de esa coincidencia, .{4,8} coincide con una cadena de 4-8 caracteres. Esto coincide con "abc3qr".

^ y $ especifican las posiciones al comienzo y al final de la cadena buscada. De este modo, no se mostrará una coincidencia si la cadena buscada contiene algún carácter fuera de los caracteres coincidentes.

(?!modelo)

Búsqueda anticipada negativa. Coincide con una cadena de búsqueda que no coincide con modelo. Una vez que se encuentra una coincidencia, la búsqueda de la siguiente coincidencia se inicia antes del texto coincidente. La coincidencia no se guarda para uso posterior.

\b(?!th)\w+\b coincide con palabras que no comienzan por "th".

Dentro del modelo, \b coincide con un límite de palabras. En la cadena buscada " quick ", coincide con el primer espacio. (?!th) coincide con una cadena distinta de "th". Coincide con "qu".

Antes de esa coincidencia, \w+ coincide con una palabra. Esto coincide con "quick".

\cx

Coincide con el carácter de control indicado por x. El valor de x debe estar en el intervalo A-Z o a-z. Si no está, se supone que c es un carácter "c" literal.

\cM coincide con CTRL+M o con un carácter de retorno de carro.

\xn

Coincide con n, donde n es un valor de escape hexadecimal. Los valores de escape hexadecimales deben tener exactamente dos dígitos. Permite la utilización de códigos ASCII en las expresiones regulares.

\x41 coincide con "A". \x041 es equivalente a "\x04" seguido por "1", (dado que n debe tener exactamente 2 dígitos)".

\num

Coincide con num, donde num es un entero positivo. Esta es una referencia a las coincidencias guardadas.

(.)\1 coincide con dos caracteres idénticos consecutivos.

\n

Identifica un valor de escape octal o una referencia inversa. Si \n va precedido por n subexpresiones capturadas como mínimo, n es una referencia inversa. En caso contrario, n es un valor de escape octal si n es un dígito octal (0-7).

(\d)\1 coincide con dos dígitos idénticos consecutivos.

\nm

Identifica un valor de escape octal o una referencia inversa. Si nm va precedido por nm subexpresiones capturadas como mínimo, nm es una referencia inversa. Si \nm va precedido por n subexpresiones capturadas como mínimo, n es una referencia inversa seguida por el literal m. Si no existe ninguna de las condiciones anteriores, \nm coincide con el valor de escape octal nm cuando n y m son dígitos octales (0-7).

\11 coincide con un carácter de tabulación.

\nml

Coincide con el valor de escape octal nml cuando n es un dígito octal (0-3) y m y l son dígitos octales (0-7).

\011 coincide con un carácter de tabulación.

\un

Coincide con n, donde n es un carácter Unicode expresado mediante cuatro dígitos hexadecimales.

\u00A9 coincide con el símbolo de copyright (©).

Caracteres no imprimibles

En la tabla siguiente se muestran las secuencias de escape que representan caracteres no imprimibles.

Carácter

Coincidencias

Equivale a

\f

Carácter de avance de página.

\x0c y \cL

\n

Carácter de nueva línea.

\x0a y \cJ

\r

Carácter de retorno de carro.

\x0d y \cM

\s

Cualquier carácter que sea un espacio en blanco. Incluye espacios, tabuladores y avances de página.

[ \f\n\r\t\v]

\S

Cualquier carácter que no sea un espacio en blanco.

[^ \f\n\r\t\v]

\t

Carácter de tabulador.

\x09 y \cI

\v

El carácter de tabulación vertical.

\x0b y \cK

Orden de prioridad

Las expresiones regulares se evalúan de forma similar a las expresiones aritméticas, es decir, de izquierda a derecha y con un orden de prioridad.

En la tabla siguiente se muestra el orden de prioridad de mayor a menor de los diversos operadores de expresiones regulares:

Operador u operadores

Descripción

\

Escape

(), (?:), (?=), []

Paréntesis y corchetes

*, +, ?, {n}, {n,}, {n,m}

Cuantificadores

^, $, \cualquiermetacarácter

Delimitadores y secuencias

|

Alternancia

Los caracteres tienen mayor prioridad que el operador de alternancia, lo que permite, por ejemplo, que 'm|food' coincida con "m" o con "food".

Vea también

Conceptos

Crear expresiones regulares