Semántica y uso de objetos RegExp:
verifique coincidencias de cadenas, obtenga parte del contenido de la cadena y construya una nueva cadena basada en la cadena original (incluidas la adición, eliminación y modificación)
Hay dos formas principales de construir un objeto RegExp:
usar literal, como /w/g
Utilice un constructor, como new RegExp(/w/)
Hay varios puntos a tener en cuenta al construir objetos RegExp:
literal se usa a menudo para construir objetos RegExp estáticos que no son generados por el tiempo de ejecución.
Los indicadores se pueden agregar directamente después del literal para limitar los resultados de ejecución de las cadenas coincidentes. Los indicadores comúnmente utilizados incluyen g e i, que se utilizan para representar la coincidencia global (global) y la coincidencia que no distingue entre mayúsculas y minúsculas (mayúsculas y minúsculas), respectivamente.
El primer parámetro del constructor RegExp proporciona el patrón del objeto. Si el patrón es un literal RegExp, no se puede proporcionar el segundo parámetro (es decir, que especifica el indicador). Si el patrón es una cadena, puede usar el segundo parámetro.
El constructor RegExp se utiliza a menudo para crear objetos RegExp dinámicos generados por el tiempo de ejecución.
Cuando el patrón de RegExp es una cadena, todo "" en literal debe escribirse como "\", porque "" debe escaparse en una cadena. Los dos métodos anteriores crean un objeto javascript, por lo que /w/ ==. /w/Devuelve false
Funciones relacionadas con objetos RegExp:
para comprobar la coincidencia de una cadena, puede utilizar el método regExp.test(string), que comprueba si la cadena coincide con el patrón proporcionado por regExp. También puede utilizar el método string.search(regExp), que devolverá -1 si los dos no coinciden.
Para obtener parte de la cadena, puede usar el método regExp.exec(string), o puede usar el método string.match(regExp). Para crear una nueva cadena a partir de la cadena original, generalmente use string.replace(searchValue, reemplazarValue) método
La semántica del patrón se proporciona en el objeto RegExp:
RegExp puede definir múltiples alternativas separadas por "|". Esta operación tiene la prioridad más baja, por lo que si "|" existe, primero divide RegExp en varias partes. Partes compuestas de términos, los términos se dividen en aserción (utilizada para calificación posicional), átomo (unidad coincidente) y átomo con cuantificador (modificador).
La afirmación se divide en "^", que se usa para coincidir con el comienzo de la cadena. En multiInput (es decir, cuando el indicador contiene m), también puede coincidir con el comienzo de una línea. final de la cadena En multiInput (es decir, cuando el indicador contiene m), también puede coincidir con el final de una línea. "b" se utiliza para coincidir con un intervalo w y W. cualquier contenido en la cadena, pero solo se usa para determinar la coincidencia de una posición.
La situación del átomo es más complicada. Veamos primero el cuantificador del átomo, que puede incluir * + ? {n} {m,} {m,n}, donde * significa que el átomo puede tener 0 o más repeticiones, + significa 1 o más Para las repeticiones anteriores, ? significa 0 o 1 veces, {n} significa exactamente n repeticiones, {m,} significa m o más repeticiones, {m,n} significa que el número de repeticiones está entre my n (incluidas m y n), el Cuantificador anterior también puede ir seguido de un ? para iniciar el modo no codicioso. Explicaré el significado de este modo más adelante.
Atom contiene PatternCharacter (caracteres ordinarios, es decir, caracteres sin semántica especial en el patrón, que coincidirán literalmente)
"." coincide con todos los caracteres que no son de terminación de línea
AtomEscape contiene el número 1 (usado para hacer referencia a la coincidencia exitosa en el paréntesis anterior). Referencias a algunos caracteres n f r t v xNN uXXXX cX, etc. Algunos caracteres con significados especiales, como d D s S w W
CharacterClass contiene dos formas: [...] y [^...]. Puede contener muchos caracteres, como -, n y otras referencias a caracteres, b, d y otros caracteres con significado especial. Tenga en cuenta que si hay caracteres alrededor de "-", la semántica cambia de un carácter determinado a otro. Si no hay caracteres a la izquierda o a la derecha de "-", entonces "-" solo representa el carácter de guión.
(grupo), si realiza la agrupación en el modo anterior, puede usar Quantifier para modificarlo después del grupo.
(?:grupo), solo se usa como grupo, y el contenido que coincida con el grupo no se registrará y no se incluirá en 1..n
(?=grupo), requiere coincidencia pero no incluye el contenido coincidente del grupo en la cadena coincidente devuelta
(?!grupo), no requiere coincidencia y no incluirá el contenido coincidente del grupo en la cadena coincidente devuelta. Ahora quiero hablar sobre los dos modos operativos más importantes de RegExp:
La alternativa de coincidencia es siempre de izquierda a derecha. La primera coincidencia ya no intentará coincidencias posteriores, como
/ab|abc/.exec("abc"). La cadena "abc" anterior solo coincide con ab en el patrón y no coincidirá con abc
, siempre es normal. Si no se agrega después de Quantifier, se usará el modo codicioso. Después de agregar?, se usará el modo no codicioso. Por ejemplo, cuando
coincida con /w+bc/.exec("abcbcbc"), se usará w+. siempre coincida con tantas coincidencias como sea posible primero (es decir, modo codicioso), por lo que coincidirá con "abcbcbc". Si se cambia a
/w+?bc/.exec("abcbcbc"), coincidirá con la menor cantidad posible ( es decir, modo no codicioso), por lo que solo coincidirá con "abc".
Para los requisitos generales de análisis de cadenas, generalmente puede usar el método exec o match para analizar. Si la cadena es grande, a menudo necesita usar una estructura de bucle para el análisis. RegExp es muy poderoso cuando se combina con while y otras declaraciones.
Cuando desea convertir una cadena existente en otra modificándola, generalmente siempre usa el método de reemplazo. En mi opinión, este método es el método más importante en RegExp. Su polimorfismo hace que tenga muchas formas. Necesidades de modificar cadenas.