Escribí un artículo sobre cómo comenzar con expresiones regulares antes. Pensé que estaba relativamente familiarizado con las expresiones regulares, pero hoy me encontré con otro trampa. Tal vez fue porque no tenía el cuidado de la mano. Hoy me centraré en compartir con ustedes la agrupación en JavaScript Expresiones regulares. Si no comprende las expresiones regulares de JS lo suficiente, puede hacer clic aquí para obtener más información.
La agrupación es bastante utilizada en reglas regulares. La agrupación que entiendo es un par de soportes (), y cada par de soportes representa un grupo.
La agrupación se puede dividir en:
La captura de la agrupación obtendrá los resultados de la agrupación correspondiente en forma de un segundo término y un tercer término en una función como la ejecución de coincidencias. Echemos un vistazo a un ejemplo primero
var reg =/test (/d+)/; var str = 'nuevo test001 test002'; console.log (str.match (reg)); // ["test001", "001", índice: 4, entrada: "Nuevo test001 test002"]
En el código (/d+) es un grupo (algunas personas también lo llaman subtoterniche), pero todos representan el mismo significado. En el ejemplo anterior, Test001 es el resultado de la coincidencia exacta.
Sin embargo, la coincidencia del grupo es encontrar caracteres que coincidan con el sub-Patrón/D+ de todo el resultado de la coincidencia exacta (es decir, TEST001). Aquí es obviamente 001.
Pero esto es lo que encontré hoy
var reg =/test (/d)+/; var str = 'nuevo test001 test002'; console.log (str.match (reg)); // ["test001", "1", índice: 4, entrada: "Nuevo test001 test002"]
La diferencia es que (/d+) se cambia a (/d)+, y todo el resultado coincidente sigue siendo TEST001, pero el resultado de la coincidencia del primer grupo es diferente.
Echemos un vistazo a sus diferencias
(/d+) Esta es una situación de agrupación, porque de forma predeterminada los patrones de coincidencia son patrones codiciosos, es decir, tantos partidos como sea posible
El resultado de todos los partidos /D+ es 001. Luego se agrega un par de soportes afuera, lo que significa un grupo, por lo que el resultado de la coincidencia en el primer grupo es 001.
Veamos (/D)+ en el segundo ejemplo. Este es también un patrón codicioso. Primero, primero coincidirá con 0 y luego 0 y también coincidirá con el final de 1.
Parece que no hay diferencia con el partido en el primer ejemplo, pero la agrupación (/d) aquí significa coincidir con un solo número.
Según mi entendimiento anterior, el resultado de que el partido fue 0 al principio fue 0, pero este entendimiento es incorrecto. Dado que todo el partido es un patrón codicioso, coincida tanto como sea posible
(/d) En el grupo capturará el último resultado coincidente 1
Si se trata de un patrón no verde, coincidirá con lo menos posible
var reg =/test (/d)+?/; var str = 'nuevo test001 test002'; console.log (str.match (reg)); // ["test001", "0", índice: 4, entrada: "Nuevo test001 test002"]
De esta manera, el resultado coincidente (/d) es 0. Aunque todavía hay resultados que se pueden igualar más tarde, aquí es igualar lo menos posible
Agrupación no capturante
var reg =/test (?:/d)+/; var str = 'nuevo test001 test002'; console.log (str.match (reg)); // ["test001", índice: 4, entrada: "Nuevo test001 test002"]
La agrupación no capturante significa que se necesita un par de paréntesis en algunos lugares, pero no quieren que sea una agrupación de captura, lo que significa que no quieren que este grupo se obtenga mediante funciones como MacTh Exec.
¿Por lo general, agregar?: (?: patrón) dentro del soporte se convierte en un grupo sin capacitación.
De esta manera, no habrá coincidencia de contenido en el resultado del partido del partido, lo que significa que falta el segundo elemento.
Este artículo se centra en explicar la diferencia entre (/d+) y (/d)+, que también es el pozo en el que he pisado hoy. Si hay algún error, no dude en corregirlos.