English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Anotaciones sobre RegExp en JavaScript

Resumen

El constructor RegExp crea un objeto de expresión regular que se utiliza para coincidir con el texto.

Para obtener información sobre expresiones regulares, consulte el capítulo sobre expresiones regulares en la Guía de JavaScript.

Sintaxis

Simbolos literales y constructores son posibles:
/pattern/flags new RegExp(pattern [, flags])

Parámetros

pattern
Texto de expresión regular
flags
Si se especifica, la bandera puede tener cualquier combinación de los siguientes valores:

g
Coincidencia global
i
Ignorar mayúsculas y minúsculas
m
Multilínea; permite que los caracteres de inicio y final (^ y $) funcionen en modo multilínea (por ejemplo, ^ y $ pueden coincidir con el inicio y el final de cada línea en la cadena, y no solo con el principio y el final de la cadena de entrada).
u
Unicode. Toma el patrón como una secuencia de puntos de código (code points).
y
Viscosidad; en la cadena de destino, solo se realiza la coincidencia desde la posición indicada por la propiedad lastIndex de la expresión regular (y no se intenta coincidir desde cualquier índice posterior).
Descripción
Hay dos métodos para crear un objeto de expresión regular: forma literal y constructor. Para representar una cadena, la forma literal no utiliza comillas, mientras que los parámetros pasados al constructor deben usar comillas. La siguiente expresión crea la misma expresión regular:

/ab+c/i;
new RegExp('ab+c', 'i');
new RegExp(/ab+c/, 'i');

Cuando se asigna una expresión, la forma literal proporciona el estado de compilación de la expresión regular, utilizando la forma literal cuando la expresión regular se mantiene como constante. Por ejemplo, cuando se utiliza una forma literal para construir una expresión regular en un bucle, la expresión regular no se recompilará (recompiled) en cada iteración.
Y el constructor del objeto de expresión regular, como new RegExp('ab}}+c') ofrece la compilación en tiempo real de expresiones regulares (runtime compilation). Si conoce que el patrón de expresión regular cambiará o si no conoce qué patrón, sino que lo obtiene de otra fuente, como la entrada del usuario, estos casos pueden utilizar el constructor.
Desde ECMAScript 6Desde el principio, cuando el primer parámetro es una expresión regular y el segundo parámetro de señal existe, new RegExp(/ab+c/, 'i') ya no lanza la excepción TypeError ("No se admite la señal cuando se construye desde otra expresión regular"); en su lugar, se crea una nueva expresión regular utilizando estos parámetros.

Cuando se crea un objeto de expresión regular utilizando el constructor, se deben seguir las reglas de escape habituales (antes de la barra invertida \). Por ejemplo, lo siguiente es equivalente:

var re = new RegExp("\\w+");
var re = /\w+/;

Definir expresión regular con literal
var expression = /pattern/ flags;
pattern que puede ser cualquier expresión regular simple o compleja
flage que indica el comportamiento de la expresión regular 1.g:Modo global, no se detiene después de encontrar el primer elemento coincidente 2.i:Modo sin distinción de mayúsculas ni minúsculas 3.m:Modo de múltiples líneas
Ejemplo:

var pattern1 = /at/g; //Coincidir con todas las "at" en la cadena
var pattern2 = /.valueOf());/i; //Coincidir con el primer "bat" o "cat", sin distinción de mayúsculas ni minúsculas
var pattern3 = /.at/gi; //Coincidencia global con tres caracteres que terminan en .at. Sin distinción de mayúsculas ni minúsculas

Todos los caracteres meta utilizados en el patrón deben escaparse. Los caracteres meta de la expresión regular incluyen:([{\^$|?*+.}])
Ejemplo:

var pattern4 = /\[bc\]at/i; //Coincidir con el primer "[bc]at", sin distinción de mayúsculas ni minúsculas

Utilice el constructor RegExp, que acepta2parámetro1:Patrón de cadena a coincidir, parámetro2:Opcional comportamiento de la marca
Ejemplo:

var pattern5 = new RegExp("[bc]at", "i");

Nota: Debido a que los parámetros de patrones del constructor RegExp son siempre cadenas de texto, en algunos casos es necesario realizar una doble escapada en las cadenas. Todos los caracteres meta deben escaparse en dobles

Ejemplo:
Cadena literal   Cadena equivalente
/\[bc\]at/      "\\[bc\\]at"
/.at/        "\\.at"
/name/\age/    "name\\/age"
/\d.\d{1,2}/    "\\d.\\d{1,2"
/\w\\hello\\123/ \\w\\\\hello\\\\123"

"}}3Nota: La creación de expresiones regulares usando literals y la instanciaización no es lo mismo, los literals siempre compartirán la misma instancia de RegExp (ECMAScript

) Cada nueva instancia de RegExp creada por el constructor es una nueva instancia.

console.log(pattern5Atributos de instancia de RegExp //.global);
console.log(pattern5false Si se ha configurado el marcador g //.ignoreCase);
console.log(pattern5true Si se ha configurado el marcador i //.multiline);
console.log(pattern5false Si se ha configurado el marcador m //.lastIndex);
console.log(pattern50 La posición de inicio de búsqueda para el siguiente elemento coincidente //.source);

[bc]at La representación de cadena de la expresión regular

console.log(pattern5Atributos heredados // /.valueOf());/[bc]at La representación de cadena de la expresión regular
console.log(pattern5.toString()); // /.valueOf());/[bc]at La representación de cadena de la expresión regular
console.log(pattern5.toLocaleString()); // /.valueOf());/[bc]at La representación de cadena de la expresión regular

i La representación literal de la expresión regular
métodos de instancia de RegExp

método uno: exec(), acepta un parámetro, que es la cadena de patrón aplicada. Devuelve un array que contiene la información del primer elemento coincidente, en caso de no haber coincidencias devuelve null, el array devuelto contiene dos propiedades index (la posición del elemento coincidente en la cadena) y input (la cadena aplicada al patrón regular).
var pattern6 var text = "huang jin liang shi ge hao ren";63= new RegExp("huang( jin liAng( shi ge hao ren)?)&#
;", "i");6var matches = pattern
.exec(text); 
//console.log(matches);
// [ 'huang jin liang shi ge hao ren',
// 'jin liang shi ge hao ren',
// 'shi ge hao ren',
// index: 0,
método dos: test(), acepta un parámetro, que es la cadena de patrón aplicada. Devuelve true si el patrón coincide con el parámetro, de lo contrario false1 input: 'huang jin liang shi ge hao ren' ]
var pattern7 = "cat, bat, sat";
sat1 var matches7= pattern1);
.exec(text1); //= new RegExp(".at", "gm");
var pattern8 = new RegExp(".at")
sat2 var matches8= pattern1);
.exec(text2); //= new RegExp(".at", "gm");
sat3 var matches8= pattern1);
.exec(text3); //cat
sat4 var matches8= pattern1);
.exec(text4); //bat
sat5 var matches8= pattern1);
.exec(text5); //console.log(matches

null

método dos: test(), acepta un parámetro, que es la cadena de patrón aplicada. Devuelve true si el patrón coincide con el parámetro, de lo contrario false2 = "000-00-0000";
var pattern9 = new RegExp("\\d{3}-\\d{2}-\\d{4)}
console.log(pattern9.test(text2))
console.log(text2);
if (pattern9.test(text2)) {
console.log("Coincidencia exitosa");
} else {
console.log("Fallo de coincidencia");
}

propiedades del constructor (no todos los navegadores lo admiten)
nombres de atributos largos    nombres de atributos cortos Descripción
input      $_    última cadena a coincidir
lastMatch    $&    última coincidencia
lastParen    $+    último grupo capturado
leftContext    $`    texto antes de la última coincidencia en la cadena de entrada
multiline    $*    booleano, si es un modo de múltiples líneas
rightContext $'    texto de la última coincidencia en la cadena de entrada
        $1~$9 usados para almacenar el grupo de captura número

en las limitaciones de ECMAScript
1.anclajes de inicio y fin de la cadena \A y \Z
2.búsqueda hacia adelante
3.clases de unión y intersección
4.grupos atómicos
5.soporte Unicode (excepto caracteres individuales)
6.grupos de captura nombrados
7.patrón de coincidencia s y x
8.coincidencia condicional
9.comentarios de expresiones regulares

Acabo de descubrir un método para coincidir múltiples líneas en JavaScript

<script>
var s = "Please yes\nmake my day!";
alert(s.match(/yes.*day/));
// Devuelve null
alert(s.match(/yes[^]*day/));
// Devuelve 'yes\nmake my day'
</script>

Lamentablemente, editplus no puede ser utilizado, muchas veces es más conveniente usar dw.

Te gustará