Pourquoi le haut est faux et le bas est vrai
var re = null ,result ,i;
for (i=0; i < 10; i++){
re = new RegExp("cat", "g");
re.test("catastrophe");
console.log(re.test("catastrophe")); //false
result = re.test("catastrophe");
console.log(result); //true
}
Les extraits suivants proviennent de http://www.w3school.com.cn/js...
Attribut JavaScript lastIndex
Objet JavaScript RegExp
Définition et utilisation
L'attribut lastIndex est utilisé pour spécifier la position de départ de la prochaine correspondance.
Syntax
RegExpObject.lastIndex
Description
Cet attribut stocke un entier, qui déclare la position du premier caractère après le dernier texte correspondant.
Le dernier résultat correspondant est trouvé par les méthodes RegExp.exec() et RegExp.test(), qui utilisent toutes deux la position pointée par l'attribut lastIndex comme point de départ pour la prochaine récupération. De cette façon, vous pouvez parcourir tout le texte correspondant dans une chaîne en appelant ces deux méthodes à plusieurs reprises.
Cet attribut est lisible et inscriptible. Il peut être défini à chaque fois que la prochaine recherche de la chaîne cible démarre. Lorsque les méthodes exec() ou test() ne parviennent plus à trouver le texte correspondant, elles réinitialisent automatiquement la propriété lastIndex à 0.
Conseils et notes
Important : les objets RegExp qui n'ont pas le drapeau g et ne représentent pas un mode global ne peuvent pas utiliser la propriété lastIndex.
Astuce : Si vous commencez à récupérer une autre nouvelle chaîne après avoir réussi à faire correspondre une certaine chaîne, vous devez définir manuellement cette propriété sur 0.
Vous pouvez jeter un œil ici, http://www.dewen.net.cn/q/468/
Parce que la marque de correspondance globale g est utilisée dans l'expression régulière, l'expression régulière enregistrera la position de correspondance réussie lastIndex, et continuer la correspondance à partir de cette position correspond à l'envers.
Ainsi, lors de la deuxième correspondance, il n'est pas nécessaire de regarder le chat précédent, il suffit de retirer le g.