Probador de expresiones regulares

Escribe un patrón y un texto de prueba: las coincidencias se marcan mientras escribes. Usa el motor de JavaScript, el mismo de Node y los navegadores.

Todo ocurre en tu navegador. No se envía nada.

Patrón y texto

//g
Banderas
$& es toda la coincidencia, $1 el primer grupo y $<nombre> un grupo con nombre.
Ejemplos

Coincidencias

Chuleta de sintaxis

.Cualquier carácter menos salto de línea
\d \DUn dígito / lo que no sea dígito
\w \WLetra sin tilde, número o _ / lo contrario
\s \SEspacio, tab o salto / lo contrario
[abc]Uno de esos caracteres
[^abc]Cualquiera menos esos
[a-zñ]Un rango (agrega ñ y tildes a mano)
^ $Inicio y fin del texto (o de la línea con m)
\bBorde de palabra
* + ?0 o más / 1 o más / 0 o 1
{3} {2,5}Exactamente 3 / entre 2 y 5
*? +?Versión perezosa: toma lo mínimo
(abc)Grupo que captura
(?:abc)Grupo que no captura
(?<n>abc)Grupo con nombre
a|bUna cosa o la otra
(?=a) (?!a)Seguido de / no seguido de
(?<=a) (?<!a)Precedido de / no precedido de
\1 \k<n>Repite lo capturado por un grupo
\. \( \\Carácter especial literal
\p{L}Cualquier letra, con tildes (requiere u)

Banderas

gGlobal: todas las coincidencias, no solo la primera
iIgnora mayúsculas y minúsculas
mMultilínea: ^ y $ valen en cada línea
sEl punto también toma saltos de línea
uUnicode: emojis y \p{...} funcionan bien
yPegajosa: solo busca justo donde terminó la anterior

Cómo funciona el probador

Cada vez que cambias el patrón, las banderas o el texto, buscamos todas las coincidencias y las marcamos en el texto. En la tabla ves la posición de cada una y lo que capturó cada grupo.

Las coincidencias vacías (por ejemplo, con a*) se muestran como una línea delgada y avanzamos un carácter para no quedarnos en un bucle infinito.

La búsqueda corre en segundo plano con un límite de tiempo. Si una expresión tarda demasiado, la detenemos y te avisamos: suele ser un caso de retroceso catastrófico, como (a+)+$.

Preguntas frecuentes

¿Por qué \w no toma la ñ ni las tildes?

En JavaScript \w solo incluye letras del inglés. Usa [\wáéíóúüñÁÉÍÓÚÜÑ] o, con la bandera u, \p{L} para cualquier letra.

¿Sirve para PHP o Python?

Lo básico es igual en todos. Cambian detalles: en PHP el patrón va entre delimitadores ('/.../u') y Python usa (?P<nombre>...) para grupos con nombre.

¿La expresión de RUT valida el dígito verificador?

No. Una expresión regular solo revisa la forma. Para el dígito hay que calcular el módulo 11, como hace nuestro validador de RUT.

¿Por qué mi patrón no encuentra nada en varias líneas?

Si usas ^ y $, activa la bandera m para que valgan en cada línea. Si usas . para cruzar saltos de línea, activa s.