El objeto RegExp se le puede aplicar tres modificadores que
actúan sobre el patrón completo, después del limitador final se pueden
indicar modificadores que varían el procesamiento del patrón. Los más
comunes son:
Por
ejemplo, para indicar el patrón "Introducción a PCRE" sin considerar
mayúsculas o minúsculas y codificado en UTF-8 escribiríamos
/introducción a pcre/iu
Estos modificadores pueden aplicarse en forma independiente o conjunta a una expresión regular.
Veamos un ejemplo del modificador i sobre una expresión regular:
<!DOCTYPE html> <html> <head> <title>Ejemplo de JavaScript</title> <meta charset="UTF-8"> </head> <body> <script> var palabra='Administracion'; var patron=/adm/i; if (patron.test(palabra)) document.write('La palabra '+palabra+' contiene la cadena adm sin tener en cuenta mayúsculas/minúsculas'); </script> </body> </html>
Los modificadores se ubican luego de la segundo barra donde declaramos la expresión regular:
var patron=/adm/i;
Ahora veamos un problema donde activamos dos modificadores:
<!DOCTYPE html> <html> <head> <title>Ejemplo de JavaScript</title> <meta charset="UTF-8"> </head> <body> <script> var oracion='El auto tiene el mejor motor que elegimos'; var patron=/el/gi; var vec=patron.exec(oracion); document.write(vec.index); //0 document.write('<br>'); vec=patron.exec(oracion); document.write(vec.index); //14 document.write('<br>'); vec=patron.exec(oracion); document.write(vec.index); //33 document.write('<br>'); vec=patron.exec(oracion); document.write(vec); //null </script> </body> </html>
Hemos definido el patron los modificadores g (global) e i (insensitive):
var patron=/el/gi;
Estamos buscando el patrón 'el' dentro de la oración 'El auto tiene el mejor motor que elegimos'. Como vemos la cadena 'el' se repite tres veces en la oración sin tener en cuenta mayúsculas y minúsculas:
El auto tiene el mejor motor que elegimos
Utilizamos el método exec ya que el método test solo tiene en cuenta la primera ocurrencia.
Para que tenga sentido la llamada de sucesivas veces del método exec debemos activar el modificador g (global)
Si no activamos el modificador global cada vez que llamamos al método exec la búsqueda comienza desde el principio.