Je veux construire une regex dans JavaScript qui correspond à un mot mais ne partie pas. Je pense que quelque chose comme \ Bword \ B fonctionne bien pour cela. Mon problème est que le mot n'est pas connu à l'avance, je voudrais donc assembler l'expression régulière à l'aide d'une variable qui maintient le mot à faire correspondre quelque chose dans le sens de:
r = "\b(" + word + ")\b";
reg = new RegExp(r, "g");
lexicon.replace(reg, "<span>$1</span>"
4 Réponses :
Puisque vous assemblez l'expression régulière des chaînes, vous devez échapper au devrait faire le tour, bien que je ne l'ai pas testé. P> Vous ne devez probablement pas utiliser Un global pour \ code> est un caractère d'échappement dans des expressions régulières \ code> s en eux. p> R code> (et probablement pas pour reg code> non plus). p> p>
Merci pour la réponse, cela fonctionne comme prévu! Au fait, je n'utilise pas de globaux, qui n'étaient tout simplement qu'un code simulé pour la question. Merci encore!
Vous n'échappez pas la barre oblique inverse. Donc, vous devriez avoir: En outre, vous devez échapper aux caractères spéciaux dans "Word", car vous ne savez pas si cela peut avoir des caractères spéciaux surgex. P> espoir CA aide. Acclamations p> p>
Votre réponse est également correcte mais j'ai vu l'autre première et cela a fonctionné, je l'ai heurté cependant. Merci!
et n'écrivez pas les expressions dans la variable REGEXP, car elle ne fonctionne pas!
Exemple (ne fonctionne pas): P>
var m = maxLength - 1;
var r = "^\\w{0,"+ m +"}$";
var reg = new RegExp(r, "g");
Utilisez cette
r = "(\\\b" +word+ "\\\b)"
Si vous pensez que
\ BWARD \ B code> fonctionnera, pourquoi la créez-vous comme\ b (mot) \ b code>?Parce que je veux capturer le mot donné qui ne sera pas toujours "mot".