Si su expresión regular es global y está capturando, debe usar exec. Match no devolverá todas tus capturas.
Match funciona muy bien cuando solo se combinan (no se capturan). Lo ejecutas una vez y te da una matriz de todas las coincidencias. (aunque si la expresión regular no es global, la coincidencia mostrará la coincidencia seguida de capturas)
Exec es lo que usa cuando está capturando, y cada vez que se ejecuta da la coincidencia, seguida de las capturas. (la coincidencia se comportará de manera que proporcione la coincidencia completa seguida de capturas, solo cuando la expresión regular no es global).
Otro uso con Exec es obtener el índice o la posición de una coincidencia. Cuando tenga una variable para su expresión regular, puede usar .lastIndex y obtener la posición de la coincidencia. Un objeto regex tiene .lastIndex, y el objeto regex es en lo que haces .exec. La coincidencia de puntos se realiza en una cadena y no podrá hacer el objeto de expresión regular dot lastIndex
Una cadena, tiene la función de coincidencia, a la que se le pasa una expresión regular. Y una expresión regular, tiene la función exec y se le pasa una cadena
ejecutivo que ejecuta varias veces. partido corres una vez
Es bueno usar la coincidencia cuando no se captura y al capturar puede usar exec, que es más poderoso, ya que es bueno para obtener capturas, pero si usó la coincidencia al capturar, vea que muestra capturas cuando la expresión regular no es global, pero no muestra capturas cuando la expresión regular es global.
> "azb".match(/a(z)b/);
[ "azb", "z" ]
> "azb".match(/a(z)b/g);
[ "azb" ]
>
Otra cosa es que si usa exec, tenga en cuenta que se llama en la expresión regular, entonces si usó una variable para la expresión regular, tiene más poder
No obtienes las coincidencias cuando no usas la variable para la expresión regular, así que usa la variable para la expresión regular, cuando usas exec
> /./g.exec("abc")
[ "a" ]
> /./g.exec("abc")
[ "a" ]
> /./g.exec("abc")
[ "a" ]
>
> /[a-c]/g.exec("abc")
[ "a" ]
> /[a-c]/g.exec("abc")
[ "a" ]
>
> var r=/[a-c]/g
> r.exec("abc")
[ "a" ]
> r.exec("abc")
[ "b" ]
> r.exec("abc")
[ "c" ]
> r.exec("abc")
null
>
Y con el ejecutivo, puede obtener el "índice" de la coincidencia.
> var r=/T/g
> r.exec("qTqqqTqqTq");
[ "T" ]
> r.lastIndex
2
> r.exec("qTqqqTqqTq");
[ "T" ]
> r.lastIndex
6
> r.exec("qTqqqTqqTq");
[ "T" ]
> r.lastIndex
9
> r.exec("qTqqqTqqTq");
null
> r.lastIndex
0
>
Entonces, si desea índices o captura, use exec (tenga en cuenta que, como puede ver, con el "índice", el "índice" que da es realmente una enésima aparición, cuenta desde 1. Por lo tanto, podría derivar el index al restar 1. Y como puede ver, da 0 - lastIndex de 0 - para no encontrado).
Y si desea estirar la coincidencia, puede usarla cuando está capturando, pero no cuando la expresión regular es global, y cuando lo hace para eso, entonces el contenido de la matriz no es todas las coincidencias, pero es el completo partido seguido de las capturas.
exec
para obtener todas las sub-selecciones.