Expresión regular -Ejemplo

Expresiones simples

La forma más simple de una expresión regular es un solo carácter ordinario que se hace coincidir consigo mismo en la cadena de búsqueda.

Por ejemplo, un patrón de un solo carácter, como a, siempre coincide con la letra a sin importar dónde aparezca en la cadena de búsqueda. A continuación se muestran algunos ejemplos de patrones de expresiones regulares de un solo carácter:

Ejemplo

/a/
/b/
/c/

Pruébalo »

La expresión regular coincidirá exactamente con la cadena "abc", sin importar en qué posición aparezca en el texto; solo tendrá éxito cuando coincida exactamente con "abc".

Ejemplo

/abc/

Pruébalo »

Tenga en cuenta que este es un ejemplo muy simple, porque la cadena "abc" en sí no tiene metacaracteres ni patrones especiales. Por lo tanto, puede usarla directamente como expresión regular sin necesidad de escapes ni cuantificadores adicionales.

Coincidencia de caracteres

Comodines.

El punto.Coincide con cualquier carácter individual, excepto el salto de línea\ny\rLa siguiente expresión regular coincide con aac, abc, acc, adc, etc., así como con a1c, a2c, a-c y a#c:

Ejemplo

/a.c/

Pruébalo »

Para hacer coincidir una cadena que contenga un nombre de archivo, y el punto.es parte de la cadena de entrada, coloque una barra invertida antes del punto en la expresión regular.\Por ejemplo, la siguiente expresión regular coincide con filename.ext:

/filename\.ext/

Cuantificador*

Coincide con el elemento anterior cero o más veces:

Ejemplo

/a*b/

Pruébalo »

Esta expresión puede coincidir con cadenas como "b", "ab", "aab", "aaab", etc.

Cuantificador+

Coincide con el elemento anterior una o más veces:

Ejemplo

/a+b/

Pruébalo »

Esta expresión puede coincidir con cadenas como "ab", "aab", "aaab", etc., pero no con "b".

Cuantificador?

Coincide con el elemento anterior cero o una vez:

Ejemplo

/colou?r/

Pruébalo »

Esta expresión puede coincidir con "color" o "colour".

Los anteriores son algunos ejemplos comunes de coincidencia de patrones de un solo carácter; se pueden usar para hacer coincidir y buscar de manera flexible cadenas con diferentes patrones.

Tenga en cuenta que la sintaxis de las expresiones regulares puede variar según el lenguaje de programación y la herramienta, por lo que en la práctica consulte la documentación correspondiente.


Una expresión regular razonable para nombre de usuario

Un nombre de usuario puede contener los siguientes tipos de caracteres:

  • 1. Las 26 letras del alfabeto inglés en mayúsculas y minúsculas se representan comoa-zA-Z。
  • 2. Los dígitos se representan como0-9。
  • 3. El guion bajo se representa como_。
  • 4. El guion medio se representa como-。

Un nombre de usuario se compone de varias letras, dígitos, guiones bajos y guiones medios, por lo que se necesita usar+para representar1una o más ocurrencias.

Según las condiciones anteriores, la expresión para el nombre de usuario puede ser:

[a-zA-Z0-9_-]+

Ejemplo

var str = "abc123-_def"; var patt = /[a-zA-Z0-9_-]+/; document.write(str.match(patt));

El siguiente texto marcado es la coincidencia obtenida por la expresión:

abc123-_def

Pruébalo »

Si no se necesita el guion medio, entonces es:

[a-zA-Z0-9_]+

Ejemplo

var str = "abc123def"; var str2 = "abc123_def"; var patt = /[a-zA-Z0-9_]+/; document.write(str.match(patt)); document.write(str2.match(patt));

El siguiente texto marcado es la coincidencia obtenida por la expresión:

abc123def
abc123_def

Pruébalo »

Coincidir con etiquetas HTML y su contenido

La siguiente expresión regular se usa para hacer coincidir etiquetas iframe:

/<iframe(([\s\S])*?)<\/iframe>/

Para la coincidencia de otras etiquetas se puede reemplazariframe 。

Coincidir con la etiqueta div con id="mydiv":

/<div id="mydiv"(([\s\S])*?)<\/div>/

Coincidir con todas las etiquetas img:

Ejemplo

/<img.*?src="(.*?)".*?\/?>/gi

Pruébalo »

Expresiones entre corchetes

Para crear una lista de grupos de caracteres coincidentes, coloque entre corchetes[ ]uno o más caracteres individuales. Cuando los caracteres se encierran entre corchetes, la lista se denomina "expresión entre corchetes". Al igual que en cualquier otra posición, los caracteres ordinarios dentro de los corchetes representan su propio valor, es decir, se hacen coincidir una vez en el texto de entrada. La mayoría de los caracteres especiales pierden su significado cuando aparecen dentro de una expresión entre corchetes. Sin embargo, hay algunas excepciones, como:

  • Si el]carácter no es el primer elemento, termina una lista. Para hacer coincidir el]carácter en la lista, colóquelo en primer lugar, justo después del[corchete de apertura.
  • \El carácter continúa actuando como escape. Para hacer coincidir el\carácter, use\\。

Los caracteres encerrados entre corchetes solo coinciden con un único carácter en esa posición de la expresión regular. La siguiente expresión regular coincide con Chapter 1, Chapter 2, Chapter 3, Chapter 4 y Chapter 5:

/Chapter [12345]/

Tenga en cuenta que la posición de la palabra Chapter y el espacio siguiente es fija en relación con los caracteres entre corchetes. La expresión entre corchetes especifica únicamente el conjunto de caracteres que coinciden con la posición del carácter individual justo después de la palabra Chapter y el espacio. Esta es la novena posición de carácter.

Para representar un grupo de caracteres coincidentes usando un rango en lugar de los caracteres individuales, use el guion-para separar el carácter inicial y el carácter final del rango. El valor de carácter de los caracteres individuales determina el orden relativo dentro del rango. La siguiente expresión regular contiene una expresión de rango que equivale a la lista entre corchetes mostrada anteriormente.

/Chapter [1-5]/

Cuando se especifica un rango de esta manera, tanto el valor inicial como el final están incluidos en el rango. Tenga en cuenta que también es importante que, según el orden de clasificación Unicode, el valor inicial debe aparecer antes que el valor final.

Para incluir un guion dentro de una expresión entre corchetes, utilice uno de los siguientes métodos:

  • Escápelo con una barra invertida:
    [\-]
  • Coloque el guion al principio o al final de la lista entre corchetes. La siguiente expresión coincide con todas las letras minúsculas y el guion:
    [-a-z]
    [a-z-]
    
  • Cree un rango en el que el valor del carácter inicial sea menor que el del guion y el valor del carácter final sea igual o mayor que el del guion. Las dos expresiones regulares siguientes cumplen este requisito:
    [!--]
    [!-~]
    

Para buscar todos los caracteres que no estén en la lista o en el rango, coloque el signo de intercalación^al principio de la lista. Si el carácter de intercalación aparece en cualquier otra posición de la lista, coincide consigo mismo. La siguiente expresión regular coincide con cualquier número y carácter que no sea 1, 2, 3, 4 o 5:

/Chapter [^12345]/

En el ejemplo anterior, la expresión coincide en la novena posición con cualquier número y carácter que no sea 1, 2, 3, 4 o 5. Así, por ejemplo, Chapter 7 es una coincidencia, y Chapter 9 también lo es.

La expresión anterior se puede representar usando un guion-de la siguiente manera:

/Chapter [^1-5]/

Un uso típico de las expresiones entre corchetes es especificar la coincidencia de cualquier letra mayúscula o minúscula o cualquier dígito. La siguiente expresión especifica dicha coincidencia:

/[A-Za-z0-9]/

Alternancia y agrupación

La alternancia utiliza el|carácter para permitir elegir entre dos o más opciones alternativas. Por ejemplo, puede ampliar la expresión regular de títulos de capítulos para devolver coincidencias más amplias que los títulos de capítulos. Sin embargo, esto no es tan simple como podría pensar. La alternancia hace coincidir|la expresión más grande a cada lado del carácter.

Podría pensar que la siguiente expresión coincide con Chapter o Section al inicio y al final de la línea, seguidos de uno o dos dígitos:

/^Chapter|Section [1-9][0-9]{0,1}$/

Desafortunadamente, la expresión regular anterior coincide con la palabra Chapter al inicio de la línea o con la palabra Section al final de la línea junto con cualquier dígito que la siga. Si la cadena de entrada es Chapter 22, la expresión solo coincide con la palabra Chapter. Si la cadena de entrada es Section 22, la expresión coincide con Section 22.

Para que la expresión regular sea más fácil de controlar, puede usar paréntesis para limitar el alcance de la alternancia, es decir, asegurarse de que solo se aplique a las dos palabras Chapter y Section. Sin embargo, los paréntesis también se usan para crear subexpresiones y pueden capturarlas para su uso posterior, como se explica en la sección sobre referencias inversas. Al agregar paréntesis en las posiciones adecuadas de la expresión regular anterior, se puede hacer que coincida con Chapter 1 o Section 3.

La siguiente expresión regular usa paréntesis para agrupar Chapter y Section, de modo que la expresión funcione correctamente:

/^(Chapter|Section) [1-9][0-9]{0,1}$/

Aunque estas expresiones funcionan correctamente, los paréntesis alrededor de Chapter|Section también capturarán cualquiera de las dos palabras coincidentes para su uso posterior. Dado que en la expresión anterior solo hay un par de paréntesis, solo hay una "subcoincidencia" capturada.

En el ejemplo anterior, solo necesita usar paréntesis para combinar la selección entre las palabras Chapter y Section. Para evitar que la coincidencia se guarde para uso futuro, coloque antes del patrón de expresión regular dentro de los paréntesis?:. La siguiente modificación proporciona la misma capacidad sin guardar las subcoincidencias:

/^(?:Chapter|Section) [1-9][0-9]{0,1}$/

División?:Además de los metacaracteres, otros dos metacaracteres de no captura crean algo llamado coincidencias de "búsqueda anticipada" (lookahead). El lookahead positivo se especifica usando?=, y coincide con la cadena de búsqueda que se encuentra en el punto de inicio donde el patrón de expresión regular entre paréntesis coincide. El lookahead negativo se especifica usando?!, y coincide con la cadena de búsqueda que se encuentra en el punto de inicio de una cadena que no coincide con el patrón de expresión regular.

Por ejemplo, suponga que tiene un documento que contiene referencias a Windows 3.1, Windows 95, Windows 98 y Windows NT. Suponga además que necesita actualizar el documento para cambiar todas las referencias a Windows 95, Windows 98 y Windows NT a Windows 2000. La siguiente expresión regular (que es un ejemplo de lookahead positivo) coincide con Windows 95, Windows 98 y Windows NT:

/Windows(?=95 |98 |NT )/

Después de encontrar una coincidencia, la siguiente búsqueda se realiza inmediatamente después del texto coincidente (sin incluir los caracteres del lookahead). Por ejemplo, si la expresión anterior coincide con Windows 98, la búsqueda continuará después de Windows y no después de 98.

Otros ejemplos

A continuación se muestran algunos ejemplos de expresiones regulares:

Expresión regular Descripción
/\b([a-z]+) \1\b/gi La posición donde una palabra aparece dos veces consecutivas.
/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/ Coincide con una URL analizada en protocolo, dominio, puerto y ruta relativa.
/^(?:Chapter|Section) [1-9][0-9]{0,1}$/ Localiza la posición de un capítulo.
/[-a-z]/ Las 26 letras de a a z, más un-signo.
/ter\b/ Puede coincidir con "chapter", pero no con "terminal".
/\Bapt/ Puede coincidir con "chapter", pero no con "aptitude".
/Windows(?=95 |98 |NT )/ Puede coincidir con Windows95, Windows98 o WindowsNT; cuando se encuentra una coincidencia, la siguiente búsqueda comienza después de Windows.
/^\s*$/ Coincide con líneas vacías.
/\d{2}-\d{5}/ Valida un número de ID compuesto por dos dígitos, un guion y cinco dígitos adicionales.
<[a-zA-Z]+.*?>([\s\S]*?)</[a-zA-Z]*?> Coincide con etiquetas HTML.
Expresión regularDescripción
hello Coincide con {hello}
gray|grey Coincide con {gray, grey}
gr(a|e)y Coincide con {gray, grey}
gr[ae]y Coincide con {gray, grey}
b[aeiou]bble Coincide con {babble, bebble, bibble, bobble, bubble}
[b-chm-pP]at|ot Coincide con {bat, cat, hat, mat, nat, oat, pat, Pat, ot}
colou?r Coincide con {color, colour}
rege(x(es)?|xps?) Coincide con {regex, regexes, regexp, regexps}
go*gle Coincide con {ggle, gogle, google, gooogle, goooogle, ...}
go+gle Coincide con {gogle, google, gooogle, goooogle, ...}
g(oog)+le Coincide con {google, googoogle, googoogoogle, googoogoogoogle, ...}
z{3} Coincide con {zzz}
z{3,6} Coincide con {zzz, zzzz, zzzzz, zzzzzz}
z{3,} Coincide con {zzz, zzzz, zzzzz, ...}
[Bb]rainf\*\*k Coincide con {Brainf**k, brainf**k}
\d Coincide con {0,1,2,3,4,5,6,7,8,9}
1\d{10} Coincide con 11 dígitos, comenzando con 1
[2-9]|[12]\d|3[0-6] Coincide con enteros en el rango de 2 a 36
Hello\nworld Coincide con Hello seguido de un salto de línea, seguido de world
\d+(\.\d\d)? Contiene un entero positivo o un número flotante con dos decimales.
[^*@#] Excluye los tres símbolos especiales *, @ y #
//[^\r\n]*[\r\n] Coincide con//comentarios que comienzan con
^dog Coincide con cadenas que comienzan con "dog"
dog$ Coincide con cadenas que terminan con "dog"
^dog$ is exactly "dog"

Más ejemplos

  • Expresiones regulares chinas

  • Expresión regular para matrículas de vehículos

  • Expresión regular para ID de WeChat

  • Expresión regular para números de QQ

  • Expresión regular para colores hexadecimales

  • Expresión regular para fortaleza de contraseñas

  • Expresión regular para nombres de usuario

  • Expresión regular para correos electrónicos

Otras extensiones