Javascript 使用字符串replace将变量传递到正则表达式中

Javascript 使用字符串replace将变量传递到正则表达式中,javascript,jquery,regex,replace,Javascript,Jquery,Regex,Replace,我在字符串替换中有一个复杂的正则表达式,我想使用一个名为“tagname”的变量来代替单词Category,但我不知道如何做到这一点 $("textarea").val().replace(/\<Category\>(.*)\<\/Category\>/gi, "<Category>TextVariable</Category>"); $(“textarea”).val().replace(/\(.*)\/gi,“TextVariable”);

我在字符串替换中有一个复杂的正则表达式,我想使用一个名为“tagname”的变量来代替单词Category,但我不知道如何做到这一点

$("textarea").val().replace(/\<Category\>(.*)\<\/Category\>/gi, "<Category>TextVariable</Category>");
$(“textarea”).val().replace(/\(.*)\/gi,“TextVariable”);
我尝试过类似的方法,但在第一个参数中不起作用

$("textarea").val().replace("/\<" + tagname + "\>(.*)\<\/" + tagname "\>/gi", "<" + tagname + ">" + TextVariable + "</" + tagname + ">");
$(“textarea”).val()。替换(“/\(.*)\/gi”,“+TextVariable+”);

您可以使用带有字符串模式和标志的
RegExp
构造函数:

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

使用
RegExp
构造函数而不是regex-literal

var regex = new RegExp("<" + tagname + ">(.*)</" + tagname + ">", "gi");
$("textarea").val().replace(regex, "<" + tagname + ">" + 
   textVariable + "</" + tagname + ">");
var regex=new RegExp((.*),“gi”);
$(“textarea”).val().replace(regex,“+
textVariable+“”);
您可以将其简化为:

//capture the tag name:
var regex = new RegExp("<(" + tagname + ")>(.*)</" + tagname + ">", "gi");
$("textarea").val().replace(regex, "<$1>" + textVariable + "</$1>");
//捕获标记名:
var regex=new RegExp(“(.*”,“gi”);
$(“textarea”).val().replace(regex,“+textVariable+”);
但请记住