web-dev-qa-db-fra.com

Quel est le sens de / gi dans une regex?

Je vois une ligne dans mon code JavaScript comme ceci:

var regex = /[^\w\s]/gi;

Que signifie cela /gi dans la regex?

Je peux comprendre une autre partie car elle accepte un groupe de mots et d’espaces, mais pas /gi.

60
batman
g modifier: global. All matches (don't return on first match)

i modifier: insensitive. Case insensitive match (ignores case of [a-zA-Z])

Dans votre cas, cependant, i n'a aucune importance, car vous ne capturez pas [a-zA-Z].

Pour une entrée comme !@#$ _ si g le modificateur n’est pas disponible, regex retournera la première correspondance ! Voir ici .

Si g est là, il retournera le tout ou ce qui peut lui correspondre . Voir ici

72
vks

Le début et la fin / s'appellent des délimiteurs. Ils disent à l'interprète où commence et finit la regex. Anything after le délimiteur de fermeture est appelé "modificateur", dans ce cas g et i.

Les modificateurs g et i ont les significations suivantes:

  • g = global, correspond à toutes les occurrences du motif d'une chaîne, pas à une seule
  • i = insensible à la casse (ainsi, par exemple, /a/i va correspondre à la chaîne "a" ou "A".

Dans le contexte que vous avez donné (/[^\w\s]/gi), le i n'a pas de sens, car il n'y a pas de parties de l'expression régulière spécifiques à la casse.

19
Ed Cottrell