Javascript: mettre en évidence une sous-chaîne de garder l'étui d'origine, mais la recherche dans la casse en mode
Je suis en train d'écrire une "suggestion boîte de recherche" et je ne peux pas trouver une solution qui permet de mettre en évidence une sous-chaîne avec javascript en gardant l'étui d'origine.
Par exemple, si je recherche pour "ca
" je recherche côté serveur dans une casse de mode et j'ai les résultats suivants:
Calculatrice
calendrier
ÉCHAPPER
Je voudrais voir la chaîne de recherche dans tous les précédents mots, de sorte que le résultat devrait être:
Calculator
cacivils
ESCAPE
J'ai essayé avec le code suivant:
var reg = new RegExp(querystr, 'gi');
var final_str = 'foo ' + result.replace(reg, '<b>'+querystr+'</b>');
$('#'+id).html(final_str);
Mais, évidemment, de cette façon, je lâche l'affaire!
Est-il un moyen de résoudre ce problème?
Vous devez vous connecter pour publier un commentaire.
Utiliser une fonction pour la deuxième argument pour
.replace()
qui retourne la vraie chaîne correspond à la concaténation des étiquettes.L'essayer: http://jsfiddle.net/4sGLL/
JSFiddle Exemple d'Entrée: https://jsfiddle.net/pawmbude/
result.replace(reg, '<b>$&</b>')
. Ne sais pas à propos de la performance, bien que, il semble juste plus agréable.function
syntaxe je suis donc allé à la recherche de la documentation. J'ai trouvé ceci par 'accident'.js
et vous souhaitez les mettre en évidence séparément dans "JavaScript". Vous devez vérifier chaque lettre individuellement dans ce cas.ES6 version
Tandis que les autres réponses jusqu'à présent semblent simples, ils ne peut pas vraiment être utilisé dans de nombreux monde réel des cas, car ils ne font pas de gérer correctement le texte HTML de s'échapper et de RegExp s'échapper. Si vous voulez mettre en valeur chaque extrait, tout en échappant bien le texte, une fonction qui retourne tous les éléments que vous devez ajouter à votre boîte à suggestions:
Pas exactement parfait et tout remplacer par une baisse de char:
JS:
HTML:
Je faire exactement la même chose.
Vous avez besoin de faire une copie.
- Je stocker dans la base de données d'une copie du réel, chaîne de caractères, en bas de casse.
Puis-je rechercher à l'aide d'un minuscule version de la chaîne de requête ou de faire un casse regexp.
Et utilise le résultat trouvé index de début dans la chaîne principale, plus la longueur de la chaîne de requête, pour mettre en évidence la chaîne de requête dans le résultat.
Vous ne pouvez pas utiliser la chaîne de requête dans le résultat depuis son cas n'est pas déterminée. Vous avez besoin de mettre en évidence une partie de la original chaîne.
de bons résultats avec
et plus facile à retenir...
thx pour user113716: https://stackoverflow.com/a/3294644/2065594
Mettre en évidence terme de recherche et d'ancrage à la première occurence - Début
Mettre en évidence terme de recherche et d'ancrage à la première occurence de Fin d'
.match()
effectue la correspondance insensible à la casse et renvoie un tableau de correspondances avec des cas intacte.J'ai trouvé un moyen plus simple pour y parvenir. JavaScript expression régulière se souvient de la chaîne identique. Cette fonction peut être utilisée ici.
J'ai modifié un peu le code.