Question

La mise en œuvre actuelle de Remy de Sharp plug-in suggestion tag jQuery de vérifie uniquement les matchs au début d'une balise. Par exemple, en tapant « Photoshop » ne retournera pas une balise nommée « Adobe Photoshop ».

Par défaut, la recherche est sensible à la casse. Je l'ai légèrement modifié pour réduire les espaces en excès et ignorer la casse:

for (i = 0; i < tagsToSearch.length; i++) {
    if (tagsToSearch[i].toLowerCase().indexOf(jQuery.trim(currentTag.tag.toLowerCase())) === 0) {
        matches.push(tagsToSearch[i]);
    }
}

Ce que j'ai essayé de faire est de modifier ce nouveau pouvoir revenir « Adobe Photoshop » lorsque les types d'utilisateur dans « Photoshop ». Je l'ai essayé d'utiliser match, mais je ne peux pas sembler le faire fonctionner lorsqu'une variable est présente dans le motif:

for (i = 0; i < tagsToSearch.length; i++) {
    var ctag = jQuery.trim(currentTag.tag);
    if (tagsToSearch[i].match("/" + ctag + "/i")) { // this never matches, presumably because of the variable 'ctag'
        matches.push(tagsToSearch[i]);
    }
}

Quelle est la syntaxe correcte pour effectuer une recherche de regex de cette manière?

Était-ce utile?

La solution

Si vous voulez faire regex dynamiquement en JavaScript, vous devez utiliser le objet RegExp . Je crois que votre code ressemblerait à ceci (ont pas testé, pas sûr, mais bonne idée générale):

for (i = 0; i < tagsToSearch.length; i++) {
    var ctag = jQuery.trim(currentTag.tag);
    var regex = new RegExp(ctag, "i")
    if (tagsToSearch[i].match(regex)) {
        matches.push(tagsToSearch[i]);
    }
}

Autres conseils

Au lieu de

"/" + ctag + "/i"

Utilisez

new RegExp(ctag, "i")

Vous pouvez aussi continuer à utiliser indexOf, il suffit de changer votre === 0 à> = 0:

for (i = 0; i < tagsToSearch.length; i++) {
    if (tagsToSearch[i].toLowerCase().indexOf(jQuery.trim(currentTag.tag.toLowerCase())) >= 0) {
        matches.push(tagsToSearch[i]);
    }
}

Mais là encore, je peux me tromper.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top