Maison  >  Article  >  interface Web  >  La relation entre lastIndex et les expressions régulières

La relation entre lastIndex et les expressions régulières

php中世界最好的语言
php中世界最好的语言original
2018-03-29 11:02:351788parcourir

Cette fois, je vais vous présenter la relation entre lastIndex et expression régulière Quelles sont les précautions lors de l'utilisation de lastIndex et de l'expression régulière. Voici des cas pratiques. .

Préface

J'ai rencontré un problème aujourd'hui lors de l'utilisation d'expressions régulières pour vérifier la même chaîne, alternative renvoie vrai. et faux. En désespoir de cause, j'ai parcouru à nouveau le guide faisant autorité et j'ai découvert que le coupable s'est avéré être LastIndex. Vous pouvez l'essayer dans la console

let reg = /[\d]/g
//undefined
reg.test(1)
//true
reg.test(1)
//false

lastIndex

lastIndex est expliqué comme suit dans le guide faisant autorité : Il s'agit d'une lecture/ écrivez Le entier. Si le modèle correspondant a le modificateur g, cet attribut est stocké au début de l'index suivant dans la chaîne entière. Cet attribut sera utilisé par exec() et test(). Toujours en utilisant l'exemple ci-dessus, observez l'attribut lastIndex

let reg = /[\d]/g  //有修饰符g
//undefined
reg.lastIndex
//0
reg.test(1)   
//true
reg.lastIndex  //匹配一次后,lastIndex改变
//1
reg.test(1)  //从index 1 开始匹配
//false
reg.lastIndex
//0
reg.test(1)
//true
reg.lastIndex
//1

Après la première correspondance réussie à l'aide de test(), lastIndex est défini sur la position finale de la correspondance, qui est 1 lorsque testing() est utilisé ; pour la deuxième fois, à partir de l'index 1, la correspondance échoue et lastIndex est réinitialisé à 0. Cela rend les résultats correspondants incompatibles avec les attentes

Solution

N'utilisez pas le modificateur g <.>

reg = /[\d]/
///[\d]/
reg.test(1)
//true
reg.test(1)
//true
reg.lastIndex
//0
reg.test(1)
//true
reg.lastIndex

2. Définissez manuellement lastIndex = 0 après test()

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes. , veuillez prêter attention aux autres sujets connexes dans l'article du site Web php chinois !

Lecture recommandée :

Explication détaillée de l'utilisation des métacaractères D (équivalent à "[^0-9]") dans les expressions régulières

Organisation des expressions régulières couramment utilisées

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn