Hermano, recientemente aprendí a JavaScript y vi que los puntos de conocimiento eran un poco complicados cuando estaba aprendiendo expresión regular, así que escribí un blog para resumirlo.
definición
Hay dos formas de definir REC EXP en JavaScript:
1) use nuevo exp: var exp1 = new Exp ("ABC");
2) Ponga el patrón directamente entre dos //: var expp2 = /abc /; //Nota. . No hay citas dobles, si la agrega, se convierte en una cadena
Personajes especiales
Visualmente, los caracteres especiales son los mismos que los de Perl. . Solo úsalo directamente
/D caracteres dígitos
/w personajes alfanuméricos ("caracteres de palabras")
/S Whitespace caracteres (espacio, pestaña, nueva línea y similar)
/D caracteres que no son dígitos
/W personajes no alfanuméricos
/S personajes no blancos
. Un período coincide con todos los personajes excepto nuevas líneas
Hay una manera muy simple de recordar:
d = dígito para que sea un número
w = palabra para que son letras
s = espacio para que sea un espacio
Todas las capitalizaciones son inversas. .
soportes []
Poner el patrón en los paréntesis significa que mientras cualquier personaje coincida, es cierto. (Es lo mismo que Java o Perl)
Por ejemplo
La copia del código es la siguiente:
console.log (/[01]/. test ("023424")); // verdadero
console.log (/[01]/. test ("13424")); // verdadero
console.log (/[01]/. test ("23424")); // FALSO
Brackets ()
Significa que todo en los soportes debe ser verdad
Por ejemplo
La copia del código es la siguiente:
console.log (/[01]/. test ("013424")); // verdadero
console.log (/[01]/. test ("13424")); // FALSO
console.log (/[01]/. test ("230424")); // FALSO
console.log (/[01]/. test ("230142401")); // verdadero
Cuantificadores
Es lo mismo que Java. . Esta mesa es muy buena. . Siempre me ha gustado usarlo
| Avaro | Reacio | Posesivo | Significado |
|---|---|---|---|
| ¿INCÓGNITA? | ¿¿INCÓGNITA?? | X?+ | X, una vez o no en absoluto |
| INCÓGNITA* | INCÓGNITA*? | X*+ | X, cero o más veces |
| X+ | X+? | X ++ | X, una o más veces |
| X {n} | X {n}? | X {n}+ | X, exactamente n veces |
| X {n,} | X {n,}? | X {n,}+ | X, al menos n veces |
| X {n, m} | X {n, m}? | X {n, m}+ | X, al menos n pero no más de M veces |
Funciones de objeto de expresión
1) La prueba es muy simple. Simplemente coloque la cadena para probar en la prueba (...), y esta función devolverá True/False, que representa la coincidencia/desator
2) Exec, esta función devuelve nulo si no se encuentra una cadena de coincidencia. Si se encuentra, se devolverá una matriz. Esto contiene cuerdas de partidos en orden.
3) String.replace (Expression1, String1) Esta función reemplaza la parte de coincidencia en la expresión con String1. En String1, puede usar el grupo entre paréntesis en la expresión anterior
, para reemplazar una parte de ella. Por ejemplo, "co-ol" .replace (/[/w] +/- [/w]+/, "$ 2- $ 1"); // "Ol-Co" se puede usar hasta $ 9
4) String.Replace (Expression, function) Esta es una versión mejorada y es muy potente. Puede definir cualquier salida que desee a través de la función. El uso específico no se enumera aquí, consulte
Haga clic para abrir el enlace
Generar dinámicamente la expresión de REG
Este método se puede aplicar cuando desea usar algo en REC EXP solo sabe sobre el tiempo de ejecución
Para generar REG EXP, solo necesita usar String para crear el aspecto REG EXP y luego usar el constructor de Exp. (mencionado al comienzo del artículo)
Por ejemplo:
La copia del código es la siguiente:
var name = "querida"
"Oh, querida". Replacia (nueva exp (nombre), "Dios"); // ay dios mío
Sin embargo, si hay caracteres especiales en el nombre, se puede usar en expresión regular, y el método anterior a menudo cometerá un error.
Entonces, en ese caso, podemos prefijar cada carácter de la cadena de entrada con una barra insegura como:
La copia del código es la siguiente:
var name = df [] vxv;
var expname = name.replace ("/[^/w/s]/g", "// $ &");
"Mi nombre es df [] vxv" .replace (nuevo exp (nombre), "bob"); // Mi nombre es Bob