Hay dos formas de definir expresiones regulares en JavaScript.
1. Constructor Segexp
Var Pattern = new Regexp ("[BC] AT", "I");
Recibe dos parámetros: uno es el patrón de cadena para que coincida, y el otro es la cadena de bandera opcional.
2. Literal
VAR Pattern = /[BC] AT /I;
El patrón coincidente de expresiones regulares admite tres cadenas de bandera:
G: Modo de búsqueda global global, que se aplicará a todas las cadenas, en lugar de detener la búsqueda cuando se busca la primera coincidencia;
I: Ingore el caso, ignore el caso de la letra, es decir, ignore el patrón y el caso de la cadena al determinar las coincidencias;
M: múltiples líneas, patrón multilínea, es decir, cuando la búsqueda llega al final de una línea de texto, continuará buscando si hay una coincidencia en la siguiente línea.
La diferencia entre estos dos métodos para crear expresiones regulares es que la expresión regular literal siempre comparte la misma instancia de regexp, y cada nueva instancia de regexp creada usando el constructor es una nueva instancia.
Metacharacter
Los metacharacteres son personajes con significados especiales. Los principales metacharacteres de las expresiones regulares son:
([{ / ^ $ |)? * +.
Los metachares tienen diferentes significados en diferentes combinaciones.
Caracteres especiales predefinidos
Clase de personaje clase simple
En general, una expresión regular tiene un carácter correspondiente a un carácter en una cadena, pero podemos usar [] para construir una clase simple para representar una clase de caracteres que coincidan con una determinada característica. Por ejemplo:
[ABC] puede igualar los caracteres en los paréntesis A, B, C o cualquier combinación de los mismos.
Clase inversa
Dado que [] puede construir una clase, naturalmente pensará en la clase correspondiente que no contiene el contenido entre paréntesis. Esta clase se llama clase inversa. Por ejemplo, [^ABC] puede igualar caracteres que no son A o B o C.
Categoría de alcance
A veces es demasiado problemático coincidir con los caracteres uno por uno y el tipo de coincidencia es el mismo. En este momento, podemos usar la línea de conexión "-" para representar el contenido entre un cierto intervalo cerrado. Por ejemplo, coincidir con todas las letras minúsculas puede usar [AZ], como sigue:
La coincidencia de 0 a 9 se puede expresar usando [0-9]:
Clases predefinidas
Para varias clases que creamos anteriormente, las expresiones regulares nos proporcionan varias clases predefinidas comúnmente utilizadas para que coincidan con los personajes comunes, de la siguiente manera:
| personaje | Categoría equivalente | significado |
| . | [^/n/r] | Haga coincidir con todos los personajes, excepto el retorno del carro y el descanso de la línea |
| /d | [0-9] | Número de caracteres |
| /D | [^0-9] | Personajes no numéricos |
| /s | [/t/n/x0b/f/r] | Personajes de espacios blancos |
| /S | [^/t/n/x0b/f/r] | Personajes no blancos |
| /W | [A-ZA-Z_0-9] | Caracteres de palabras (letras, números y subrayos) |
| /W | [^A-Za-Z_0-9] | Personajes que no son palabras |
cuantificador
El método anterior coincide con los caracteres son uno a uno. Si un personaje aparece varias veces seguidas, será muy problemático igualar según el método anterior. Por lo tanto, nos preguntamos si hay otros métodos que pueden igualar directamente los caracteres que aparecen repetidamente. Las expresiones regulares nos proporcionan algunos cuantificadores, como sigue:
| personaje | significado |
| ? | Cero o una vez (hasta una vez) |
| + + | Aparecer una o más veces (al menos una vez) |
| * | Cero o múltiples ocurrencias (en cualquier momento) |
| {norte} | Aparecer n veces |
| {Nuevo Méjico} | Aparecer y a m veces |
| {norte,} | Aparecer al menos n veces |
Modos codiciosos y no greedios
Para el método de coincidencia de {N, M}, ¿debería coincidir N o M? Esto implica el tema de los patrones de correspondencia. Por defecto, los cuantificadores son tantos caracteres coincidentes como sea posible, lo que se llama modo codicioso, por ejemplo:
var num = '123456789'; num.match (// d {2,4}/g); // [1234], [5678], [9]Para el modo correcto y no verde, solo necesitas agregar "?" Después del cuantificador. Por ejemplo, {n, m}?, Es coincidir con los menos caracteres, como sigue:
var num = '123456789'; num.match (// d {2,4}?/g); // [12], [34], [56], [78], [9]Agrupamiento
Los cuantificadores solo se pueden combinar varias veces para un solo carácter. ¿Qué pasa si queremos coincidir con un cierto conjunto de caracteres varias veces? En expresiones regulares, los soportes pueden definir una cadena en su conjunto como grupo.
Si queremos coincidir con la palabra Apple aparece 4 veces, podemos igualar (Apple) {4} como este, como sigue:
Si desea que aparezcan la aparición de manzana o naranja 4 veces, puede insertar el carácter de la tubería "|", por ejemplo:
(manzana | naranja) {4}
Si aparecen múltiples soportes en una expresión regular utilizando agrupación, es decir, múltiples grupos, el resultado coincidente también agrupará y numerará las coincidencias, por ejemplo:
(manzana)/d+(naranja)
Si no queremos capturar ciertos paquetes, solo necesitamos seguir un signo de interrogación y un colon inmediatamente antes de los soportes del paquete, por ejemplo:
(?: manzana)/d+(naranja)
límite
Las expresiones regulares también nos proporcionan varios caracteres de coincidencia de límites de uso común, como:
| personaje | significado |
| ^ | Empiece con xx |
| $ | Terminando con xx |
| /b | Límite de palabras, refiriéndose a caracteres que no sean [A-ZA-Z_0-9] |
| /B | Límite sin palabras |
La palabra límite coincide con una posición, un lado de esta posición son los caracteres que componen la palabra, pero el otro lado es la posición inicial o final de un carácter o cadena sin palabras.
Avance
LookAhead se usa para que coincida con la siguiente aparición de un conjunto de caracteres específico o no.
| expresión | significado |
| exp1 (? = exp2) | La coincidencia es seguida por la exp2 de exp2 |
| exp1 (?! exp2) | Coincidir con exp1 que no es exp2 después |
Ver un ejemplo:
manzana (? = naranja)
(/apple(?=orange)/).test('appleorange123 '); // true (/apple(?=orange)/).test('applepear345 '); //FALSOEchemos un vistazo a otro ejemplo:
manzana (?! naranja)
(/apple(?eRange)/).test('appleorange123 '); // falso (/apple(?eGeange)/).test('ApplePear345 '); //verdaderoEl artículo anterior es un cliché sobre la sintaxis de expresión regular de JavaScript. Este es todo el contenido que comparto con ustedes. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.