Quelle est la signification du g
drapeau dans les expressions régulières?
Quelle est la différence entre /.+/g
et /.+/
?
javascript
regex
Intelis
la source
la source
var r = /a/g; console.log(r.test('a'), r.test('a')); // true false
Exemple en Javascript pour expliquer:
la source
g
est l'indicateur de recherche globale.L'indicateur de recherche globale permet à RegExp de rechercher un modèle dans toute la chaîne, créant un tableau de toutes les occurrences qu'il peut trouver correspondant au modèle donné.
La différence entre
/.+/g
et/.+/
est que lag
version trouvera chaque occurrence au lieu de la première.la source
Il n'y a pas de différence entre
/.+/g
et/.+/
car ils ne correspondront tous les deux qu'une seule fois à la chaîne entière. Leg
fait une différence si l'expression régulière peut correspondre plus d'une fois ou contient des groupes, auquel cas.match()
renvoie un tableau des correspondances au lieu d'un tableau des groupes.la source
Comme @matiska l'a souligné, l'
g
indicateur définit également lalastIndex
propriété.Un effet secondaire très important de ceci est que si vous réutilisez la même instance de regex avec une chaîne correspondante, cela finira par échouer car il ne commencera à rechercher que sur le
lastIndex
.la source
Outre la signification déjà mentionnée du
g
drapeau, il influence laregexp.lastIndex
propriété:Référence: Mozilla Developer Network
la source
G dans les expressions régulières est a définit une recherche globale, ce qui signifie qu'il rechercherait toutes les instances sur toutes les lignes.
la source
Donnera un exemple basé sur la chaîne. Si nous voulons supprimer toutes les occurrences d'une chaîne. Disons si nous voulons supprimer toutes les occurrences de "o" avec "" de "hello world"
la source
g
->
renvoie toutes les correspondanceswithout g
->
renvoie la première correspondanceexemple:
'1 2 1 5 6 7'.match(/\d+/)
revient["1", index: 0, input: "1 2 1 5 6 7", groups: undefined]
. Comme vous le voyez, nous ne pouvons prendre que le premier match"1"
.'1 2 1 5 6 7'.match(/\d+/g)
renvoie un tableau de toutes les correspondances["1", "2", "1", "5", "6", "7"]
.la source