2009-07-27 7 views
9

J'essaie de faire correspondre une partie de la chaîne et elle ne devrait pas être sensible à la casse. J'ai le code suivant mais je n'ai jamais la chaîne remplacée.JavaScript Ignorer le cas Regex

var name = 'Mohammad Azam' 
var result = name.replace('/' + searchText + '/gi', "<b>" + searchText + "</b>"); 

La variable searchText sera "moha" ou "mo" ou "moh".

Comment puis-je obtenir la chose correspondante en caractères gras.

+0

Que voulez-vous remplacer searchText avec? Chaîne littérale 'searchText' ou autre chose? – SolutionYogi

Répondre

20

/modèle/a un sens quand il est mis en un littéral, pas si vous construisez chaîne comme ça. (Je ne suis pas sûr à 100% que.)

Essayez

var name = 'Mohammad Azam'; 
var searchText = 'moha'; 
var result = name.replace(new RegExp('(' + searchText + ')', 'gi'), "<b>$1</b>"); 
//result is <b>Moha</b>mmad Azam 

EDIT:

Ajouté la page de démonstration pour le code ci-dessus.

Demo →

Code

+1

Vous ** n'avez pas ** à construire RegExp avec une parenthèse –

+1

Il veut capturer le match et l'entourer de et tags. Vous ne pouvez pas capturer sans parenthèses. – SolutionYogi

+0

Oui, vous pouvez lorsque la chaîne de recherche est identique au remplacement sans balises environnantes. –

3

Je pense que vous êtes à la recherche de nouveaux RegExp, ce qui crée une expression régulière dynamique - ce que vous essayez de faire est maintenant correspondre à une chaîne (pas un objet regexp):

var name = 'Mohammad Azam', searchText='moha'; 

var result = name.replace(new RegExp(searchText, 'gi'), "" + searchText + ""); result 

EDIT: En fait , ce qui est probablement ce que vous recherchez, tant pis^

var name = 'Mohammad Azam', searchText='moha'; 
name.match(new RegExp(searchText , 'gi'))[0] 
name // "Moha" 
+0

heh, je me suis confus avec ce que vous cherchiez - faites le moi savoir si l'un de ces exercices. –

+0

Vous aviez raison la première fois :) C'est un remplacement pas un match –

Questions connexes