¿Alguien sabe cómo analizar expresiones regulares de JavaScript?
El objeto RegExp y el objeto String de JavaScript definen métodos para usar expresiones regulares para realizar poderosas funciones de coincidencia de patrones, recuperación de texto y reemplazo. En JavaScript, una expresión regular está representada por un objeto RegExp. Por supuesto, puedes usar el constructor RegExp() para crear un objeto RegExp. También puede crear objetos RegExp utilizando una sintaxis especial recién agregada en JavaScript 1.2. Así como los literales de cadena se definen como caracteres entre comillas, los literales de expresión regular se definen como caracteres entre un par de barras (/). Por lo tanto, JavaScript puede contener el siguiente código: var patrón =/s $/; esta línea de código crea un nuevo objeto RegExp y lo asigna a la variable patrón. Este objeto RegExp especial coincide con cualquier cadena que termine con la letra "s". También puede usar RegExp() para definir una expresión regular equivalente. El código es el siguiente: var patrón = new RegExp(" s $ "); ya sea que use la expresión regular literal o el constructor RegExp(), creando un objeto RegExp. Es relativamente fácil. La tarea más difícil es describir el patrón de caracteres utilizando la sintaxis de expresiones regulares. JavaScript utiliza un subconjunto bastante completo de la sintaxis de expresiones regulares del lenguaje Perl. Una especificación de patrón de expresión regular consta de una secuencia de caracteres. La mayoría de los caracteres (incluidos todos los caracteres alfanuméricos) describen caracteres que coinciden literalmente. De esta forma, la expresión regular /java/ coincide con todas las cadenas que contienen la subcadena "java". Aunque otros caracteres de la expresión regular no coinciden literalmente, tienen significados especiales. La expresión regular /s$/ contiene dos caracteres. El primer carácter especial "s" coincide exactamente consigo mismo. El segundo carácter "$" es un carácter especial que coincide con el final de la cadena.
. Descubrimos que todos los caracteres alfabéticos y números de la expresión regular coinciden literalmente. Las expresiones regulares de JavaScript también admiten algunos caracteres no alfabéticos mediante secuencias de escape que comienzan con una barra invertida (\). Por ejemplo, la secuencia "\n" coincide con un carácter de nueva línea en una cadena. En las expresiones regulares, muchos caracteres de puntuación tienen significados especiales.
____________________________
El carácter alfanumérico en sí
\fSalto de página
\nSalto de línea
\r enter.
\ttab
\vpestaña vertical
\/a/cantidad directa
\ \a\cantidad directa
\.A. Cantidad directa
\ * A *Cantidad directa
\ Una Cantidad directa
\ ?Uno? Cantidad directa
\ | a |Cantidad directa
\(1) Cantidad directa
\) a) Cantidad directa
\[ Una[cantidad directa
\] a]cantidad directa
\ { a {cantidad directa
\} a}cantidad directa
\XXX es el carácter del código ASCII especificado por el número decimal XXX.
\ Xnn Carácter ASCII especificado por el número hexadecimal nn
\ carácter de control cX Cuando utilice signos de puntuación especiales en expresiones regulares, debe precederlos con un "\". 2. Las clases de personajes se pueden combinar en clases de personajes colocando caracteres directos individuales entre paréntesis. Una clase de carácter coincide con todos los caracteres que contiene. Entonces, la expresión regular /[ABC]/ coincide con cualquiera de las letras "a", "b" o "c".
Además, puede definir una clase de carácter negativo que coincida con todos los caracteres excepto los contenidos entre paréntesis. Al definir una sugerencia de carácter negativo, coloque el símbolo como el primer carácter en el corchete izquierdo. El conjunto de expresiones regulares es /[a-zA-z0-9]/. Debido a que algunas clases de caracteres son tan comunes, la sintaxis de expresiones regulares de JavaScript incluye caracteres especiales y secuencias de escape para representar estas clases comunes. Por ejemplo, \s coincide con espacios, tabulaciones y otros espacios, mientras que \s coincide con cualquier carácter excepto espacios.
[...]Cualquier carácter entre paréntesis
[...]Cualquier carácter que no esté entre paréntesis
. Cualquier carácter que no sea un carácter de nueva línea es equivalente a [\n]
\wCualquier carácter es equivalente a [a-zA-Z0-9]
\WCualquier carácter que no sea A un solo carácter, equivalente a [a-za-z0-9]
\sCualquier espacio en blanco, equivalente a [\t\n\r\f\v]
\SAny Non- caracteres de espacio en blanco, equivalente a [\t\n\r\f\v]
\d Cualquier número, equivalente a [0-9].
\D Cualquier carácter distinto de números, equivalente a [0-9].
[\b] Retroceso cantidad directa (caso especial) 3. Utilizando la sintaxis de la tabla normal anterior, puede describir un número de dos dígitos como /\d\d/. Esta cadena consta de tres caracteres y un número seguido de una letra. Estos patrones complejos utilizan la sintaxis de expresiones regulares para especificar la cantidad de veces que se debe repetir cada elemento de la expresión. Especifica que los caracteres que se van a copiar siempre aparecen después del patrón al que se aplican. Debido a que cierto tipo de copia es más común, existen algunos caracteres especiales. solían representarlos. Por ejemplo, un número es un patrón que copia el patrón anterior una o más veces. La siguiente tabla enumera la sintaxis de copia. Primero veamos un ejemplo: /\ d {2, 4}// Coincide con un número entre 2 y 4. /\w{3} \d? /// Haga coincidir tres caracteres de una sola palabra y un número arbitrario. /\ s java \ s // Coincide con la cadena "Java" precedida y seguida de uno o más espacios. /["]*//Coincide con cero o más caracteres sin comillas.
El significado del carácter copiado de la expresión regular {n, m} coincide con el elemento anterior al menos n veces, pero no más de m veces.
{n,} coincide con el elemento anterior no más veces
{n} coincide con el elemento anterior exactamente n veces > Coincide con el elemento anterior 0 o. 1 veces, lo que significa que el elemento anterior es opcional. Equivale a {0, 1}
Coincide con el elemento anterior más de 1 vez, lo que equivale a {1 ,}
<. p>* coincide con el elemento anterior 0 o más veces. Es equivalente a {0,} 4. La sintaxis para agrupar y citar expresiones regulares también incluye especificar opciones, agrupar subexpresiones y citar el carácter especial de la subexpresión anterior. carácter | utilizado para separar la selección. Por ejemplo, /ab|cd|ef/ coincide con la cadena "ab", o la cadena "cd" o "ef [a-z]{4}/ Una coincidencia es de tres dígitos". número o cuatro letras minúsculas. En las expresiones regulares, los paréntesis tienen varios propósitos. Su función principal es agrupar elementos individuales en subexpresiones para que pueda utilizar * o ? para manejar estos elementos. la cadena "java", que puede ir seguida o no de /(ab | cd) | ef)/. Uno o más duplicados de la cadena "ef" o de la cadena "ab" o "CD". El segundo propósito de los paréntesis es definir un subpatrón dentro del patrón completo. Cuando la cadena de destino coincide correctamente, podemos extraer la parte de la cadena de destino que coincide con el subpatrón entre paréntesis. una o más letras seguidas de uno o más números, entonces podemos usar el patrón /[a-z]\d/.Pero como asumimos que realmente nos importa el número al final de cada coincidencia, si ponemos la parte numérica del patrón entre paréntesis (/[a-z] (\d )/) podemos extraer de cualquier coincidencia los números recuperados y luego Lo analizaremos. Otro propósito de las subexpresiones entre corchetes es permitirnos hacer referencia a una subexpresión anterior después de la misma expresión regular. Esto se logra insertando una cadena \ Esto se logra sumando uno o más números. Los números se refieren a la posición de la subexpresión entre corchetes en la expresión regular. Por ejemplo, \1 se refiere a la subexpresión del primer corchete. \3 se refiere a la subexpresión del tercer paréntesis. Tenga en cuenta que una subexpresión se puede anidar dentro de otras subexpresiones, por lo que su posición es la del paréntesis de apertura. Por ejemplo, la siguiente expresión regular se especifica como \.
/([Jj]ava([Ss]script))\ sis \ s(fun \ w *)/
Referencia a la subexpresión anterior en una expresión regular No especifica el patrón de la subexpresión, sino el texto que coincide con el patrón. De esta manera, las comillas no son sólo un atajo para ayudarle a ingresar partes repetidas de una expresión regular, sino que también implementan una convención. Es decir, cada parte delimitada de la cadena contiene exactamente los mismos caracteres. Por ejemplo, la siguiente expresión regular coincide con todos los caracteres entre comillas simples o dobles. Sin embargo, requiere que las comillas de apertura y cierre coincidan (por ejemplo, dos comillas dobles o dos comillas simples): /['"] ['"] * ['"]/
Si las comillas de apertura y cierre son necesarios Para la coincidencia de comillas, podemos usar las siguientes comillas: /(['"]] ['"] * \ 1/\ 1 coincide con el patrón que coincide con la subexpresión del primer corchete. En este caso, implementa un El La convención es que la comilla de apertura debe coincidir con la comilla de cierre. Tenga en cuenta que si hay más dígitos después de la barra invertida que la subexpresión entre paréntesis, se interpretará como una secuencia de escape decimal en lugar de tres comillas. Complete los caracteres para representar secuencias de escape a evitar. confusión Por ejemplo, use \044 en lugar de \44. Estos son los caracteres de selección, agrupación y referencia para expresiones regulares:
|La subexpresión de la izquierda o la subexpresión de la derecha coinciden.
(...) agrupación. Esta unidad se puede representar mediante *, ? y |. Guarda los caracteres que coinciden con este grupo para referencia futura. por el enésimo grupo. El grupo es una subexpresión entre paréntesis (posiblemente anidada). El número de corchetes izquierdos se cuenta de izquierda a derecha. Como podemos ver, solo muchos elementos en la expresión regular pueden coincidir con uno. carácter en la cadena. Por ejemplo, \s solo coincide con un carácter de espacio en blanco. Algunos elementos de coinciden con un espacio de ancho 0 entre caracteres. Por ejemplo, \b coincide con el límite entre un carácter de palabra /w y un carácter que no es una palabra. no el carácter real como \b. Los caracteres no especifican ningún carácter en la cadena coincidente. Especifican las posiciones legales donde ocurre la coincidencia. A veces llamamos a estos elementos anclas de expresiones regulares porque ubican el patrón en una posición específica en la recuperación. string. is", lo que hace que el patrón dependa del comienzo de la cadena, mientras que el elemento ancla $ posiciona el patrón al final de la cadena. Por ejemplo, para hacer coincidir la palabra "javascript", podemos usar la expresión regular / javaScript $/. Si queremos recuperar la palabra "Java" en sí (en lugar de un prefijo como en "javascript"), entonces podemos usar el patrón /\s java \s/. Pero hay dos problemas con esto. Si "java" aparece al principio o al final de un carácter, el patrón no coincidirá con él a menos que haya un espacio al principio y al final. En segundo lugar, cuando el patrón encuentra un carácter coincidente, devuelve una coincidencia con espacios antes y después. it string, esto no es lo que queremos, por lo que hacemos coincidir el límite de la palabra \b en lugar del carácter de espacio real \s.
La expresión resultante es /\b java \b/. Los siguientes son los caracteres ancla de las expresiones regulares:
Significado del carácter
Coincide con el comienzo de un carácter y, en una búsqueda de varias líneas, coincide con el comienzo de una línea.
$ coincide con el final de un carácter y, en búsquedas de varias líneas, coincide con el final de una línea.
\bHacer coincidir los límites de las palabras. En resumen, es la posición entre los caracteres \w y \w (nota: [\b] coincide con el retroceso).
\B Coincide con caracteres que no son límites de palabras. 6. Atributos Hay un último elemento sobre la sintaxis de las expresiones regulares, que son los atributos de las expresiones regulares, que explican las reglas de coincidencia de patrones avanzada. A diferencia de otras sintaxis de expresiones regulares, los atributos se interpretan fuera del símbolo /. Es decir, no aparecen entre dos barras. Pero después del segundo corte. JavaScript 1.2 admite dos atributos. El atributo I indica que la coincidencia de patrones no debe distinguir entre mayúsculas y minúsculas. El atributo G indica que la coincidencia de patrones debe ser global. Es decir, se deben encontrar todas las coincidencias en la cadena recuperada. Juntas, estas dos propiedades realizan una coincidencia global que no distingue entre mayúsculas y minúsculas. Por ejemplo, realice una búsqueda que no tenga en cuenta el tamaño para encontrar el primer valor específico de la palabra "java" (o "java", "JAVA", etc.). ), podemos usar la expresión regular que no distingue el tamaño /\ bjava \ b/i. Si desea encontrar todos los valores específicos de "java" en una cadena, también puede agregar el atributo g, es decir,
Significado del carácter
Realizo una coincidencia que no distingue entre mayúsculas y minúsculas.
g Realiza una coincidencia global. En resumen, encuentra todas las coincidencias en lugar de detenerse cuando encuentra la primera. Aparte de los atributos G e I, las expresiones regulares no tienen otras propiedades como las propiedades. Si la propiedad estática multilínea del constructor RegExp se establece en verdadero, la coincidencia de patrones se realizará en modo multilínea. En este modo, los caracteres de anclaje $ y $ coinciden no solo con el principio y el final de la cadena de búsqueda, sino también con el principio y el final de una línea en la cadena de búsqueda. Por ejemplo, el patrón /Java$/ coincide con "Java" pero no con "Java\nis fun". Este último también coincidirá si configuramos el atributo multilínea: RegExp.multiline = true El objeto de expresión regular contiene el patrón de expresión regular. Tiene propiedades y métodos para hacer coincidir o reemplazar un carácter específico (o conjunto de caracteres) en una cadena con un patrón de expresión regular. Para agregar propiedades a una única expresión regular, puede utilizar el constructor de expresiones regulares. Cada vez que se llama a una expresión regular preestablecida, tiene propiedades estáticas (el objeto regexp predefinido tiene propiedades estáticas que se establecen cada vez que se usa cualquier expresión regular. No sé si la traducción es correcta, por favor indique el texto original usted mismo. Traduzca) . Crear:
Constructor de formato de texto o expresión regular
Formato de texto: /pattern/flags
Constructor de expresión regular: new RegExp("pattern" [, " flags "]);
Descripción del parámetro:
Patrón: texto de expresión regular.
Banderas: si están presentes, serán:
Partida global
I: ignorar mayúsculas y minúsculas
Gi: combinación anterior
[Nota] Los parámetros en formato de texto no requieren comillas, mientras que los parámetros en el constructor requieren comillas. Por ejemplo, /ab c/i new RegExp("ab c ", " I ") logra la misma función. En el constructor, es necesario traducir algunos caracteres especiales (agregue "\" antes de los caracteres especiales). Por ejemplo: re = new RegExp("\\w ") El significado de los caracteres especiales en expresiones regulares.
\Como un cambio en el significado de la palabra, es decir, los caracteres generalmente después de \" no se interpretan de acuerdo con el significado original, como /b/ que coincide con el carácter "b". Cuando hay una barra diagonal delante de b, /\b/ significa hacer coincidir los límites de las palabras.
-o-
Restaura los caracteres funcionales de las expresiones regulares. Por ejemplo, "*" coincide con el metacarácter anterior 0 veces o más, /a*/ coincidirá con a, aa. y AAA, después de agregar "\", /a\*/ solo coincidirá con "a*".
Coincide con la entrada o el comienzo de una línea. /A/coincide con "A" pero no con "A"
$ coincide con la entrada o el final de línea, /a$/ coincide con "A" pero no con "A"
* coincide con el anterior metacarácter 0 o más veces. /ba*/ coincidirá con b, ba, baa, baaa.
Coincide con el metacarácter anterior 1 o más veces. /ba*/ coincidirá con ba, baa, baaa.
Coincide con el metacarácter anterior 0 o 1 veces. /ba*/ coincidirá con b,ba.
(X) coincide con X y almacena X en una variable llamada $1...$9.
X|y coincide con x o y.
{n} coincidencias exactas
{n,} coincidencias más de n veces.
{n, m} coincide n-m veces.
El conjunto de caracteres [xyz], que coincide con cualquier carácter (o metacarácter) de este conjunto.
[XYZ] no coincide con ningún carácter del conjunto.
[\b]Coincide con un carácter de retroceso
\bCoincide con un límite de palabra.
\B Coincide con palabras sin límites.
\cXAquí, x es el carácter de control, /\cM/ coincide con CTRL-M.
\dCombina un carácter con varias palabras. /\d/ = /[0-9]/
\D coincide con un carácter que no es una palabra. /\ d/=/[0-9]/
\nCoincide con un carácter de nueva línea.
\rHacer coincidir el retorno de carro.
\s coincide con un carácter de espacio en blanco, incluidos \n, \r, \f, \t, \v, etc.
\Smatches un carácter que no sea un espacio en blanco igual a la pestaña /[\n\f\r\t\v]/
\tmatches.
\v coincide con un carácter de tabulación redirigido.
\w coincide con un carácter que puede formar una palabra (alfanumérico, mi traducción gratuita, incluidos los números), incluidos los guiones bajos. Por ejemplo, [\w] coincide con el 5 en "$5,98", que es igual a. [a-zA-Z0-9].
\W coincide con caracteres que no pueden formar una palabra. Por ejemplo, [\W] coincide con $ en "$5.98", que es igual a [a-za-z0-9].