J'ai essayé d'utiliser une simple opération jQuery pour faire correspondre dynamiquement et stocker toutes les balises d'ancrage et leurs textes sur la page. Mais j'ai trouvé un comportement étrange. Lorsque vous utilisez match() ou exec(), si vous désignez l'aiguille comme un objet RegExp distinct ou une variable de modèle, votre requête ne correspond qu'à une seule instance parmi des dizaines dans la chaîne haystack.Javascript Match et RegExp problème - Comportement étrange
Et si vous désignez le modèle comme celui-ci
match(/needle/gi)
il correspond à tous les cas de l'aiguille.
Voici mon code.
Vous pouvez même lancer Firebug et essayer ce code ici même sur cette page.
var a = {'text':'','parent':[]};
$("a").each(function(i,n) {
var module = $.trim($(n).text());
a.text += module.toLowerCase() + ',' + i + ',';
a.parent.push($(n).parent().parent());
});
var stringLowerCase = 'b';
var regex = new RegExp(stringLowerCase, "gi");
//console.log(a.text);
console.log("regex 1: ", regex.exec(a.text));
var regex2 = "/" + stringLowerCase + "/";
console.log("regex 2: ", a.text.match(regex2));
console.log("regex 3: ", a.text.match(/b/gi));
Pour moi, il retourne:
regex 1: ["b"]
regex 2: null
regex 3: ["b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b"]
Quelqu'un peut-il expliquer la racine de ce comportement? : J'ai oublié de mentionner que pour regex1, il ne fait aucune différence si vous ajoutez les drapeaux "gi" pour la correspondance globale et insensible à la casse. Il retourne toujours un seul match.
EDIT2: J'ai rencontré mon propre problème. Je ne sais toujours pas pourquoi une regex1 correspond à une seule instance, mais j'ai réussi à faire correspondre toutes les instances en utilisant match() et regex1.
Donc, cela correspond à tous et dynamiquement!
var regex = new RegExp(stringLowerCase, "gi");
console.log("regex 2: ", a.text.match(regex));
Quel est le contenu de a.text –
un est juste un objet avec deux éléments. Je l'ai défini en haut du code. Son contexte est probablement l'objet document. – picardo