2010-06-29 6 views
2

J'ai un regEx compliqué dans une chaine de remplacement et je veux utiliser une variable appelée "tagname" au lieu du mot Category, mais je ne sais pas comment faire. J'ai essayé quelque chose comme ceci, mais cela n'a pas fonctionné dans le premier paramètre.Transmettre une variable en regex avec la chaine remplacer

$("textarea").val().replace("/\<" + tagname + "\>(.*)\<\/" + tagname "\>/gi", "<" + tagname + ">" + TextVariable + "</" + tagname + ">"); 

Répondre

5

Vous pouvez utiliser le constructeur RegExp avec un modèle de chaîne et drapeaux:

var regex = new RegExp("<" + tagname + ">(.*)</" + tagname + ">", "gi"); 
$("textarea").val().replace(regex, "<" + tagname + ">" + TextVariable + "</" + tagname + ">"); 
+0

Merci beaucoup! :) – Guest

6

Utilisez le constructeur RegExp au lieu de regex littérale.

var regex = new RegExp("<" + tagname + ">(.*)</" + tagname + ">", "gi"); 
$("textarea").val().replace(regex, "<" + tagname + ">" + 
    textVariable + "</" + tagname + ">"); 

vous pouvez simplifier comme:

//capture the tag name: 
var regex = new RegExp("<(" + tagname + ")>(.*)</" + tagname + ">", "gi"); 
$("textarea").val().replace(regex, "<$1>" + textVariable + "</$1>"); 

Mais gardez à l'esprit que parsing xml/html with regex is a baaad idea

Questions connexes