Maison > Questions et réponses > le corps du texte
P粉3990907462023-08-23 00:35:02
Vous utilisez un objet RegExp
et vous l'exécutez plusieurs fois. A chaque exécution, il continue à partir du dernier index correspondant.
Avant chaque exécution, vous devez "réinitialiser" la regex pour repartir de zéro :
result.push(re.test('Foo Bar')); re.lastIndex = 0; result.push(re.test('Foo Bar')); // 现在的结果是 [true, true]
Cela étant dit, il pourrait être plus lisible de créer un nouvel objet RegExp à chaque fois (peu de surcharge puisque le RegExp est déjà mis en cache) :
result.push((/Foo B/gi).test(stringA)); result.push((/Foo B/gi).test(stringB));
P粉5233350262023-08-23 00:21:13
Utilisé avec g
标志的 RegExp
对象会跟踪匹配发生的 lastIndex
donc lors des matchs suivants, il commencera à partir du dernier index utilisé plutôt que de partir de 0. Jetez un œil à un exemple :
var query = 'Foo B'; var re = new RegExp(query, 'gi'); console.log(re.lastIndex); console.log(re.test('Foo Bar')); console.log(re.lastIndex); console.log(re.test('Foo Bar')); console.log(re.lastIndex);