我在字符串替换中有一个复杂的regEx,我想使用一个名为“tagname”的变量而不是单词Category,但我不知道如何做到这一点。
$("textarea").val().replace(/\<Category\>(.*)\<\/Category\>/gi, "<Category>TextVariable</Category>");
我尝试了类似的东西,但它在第一个参数中没有用。
$("textarea").val().replace("/\<" + tagname + "\>(.*)\<\/" + tagname "\>/gi", "<" + tagname + ">" + TextVariable + "</" + tagname + ">");
答案 0 :(得分:6)
您可以将RegExp
构造函数与字符串模式和flags:
var regex = new RegExp("<" + tagname + ">(.*)</" + tagname + ">", "gi");
$("textarea").val().replace(regex, "<" + tagname + ">" + TextVariable + "</" + tagname + ">");
答案 1 :(得分:6)
使用RegExp
构造函数而不是正则表达式文字。
var regex = new RegExp("<" + tagname + ">(.*)</" + tagname + ">", "gi");
$("textarea").val().replace(regex, "<" + tagname + ">" +
textVariable + "</" + tagname + ">");
您可以将其简化为:
//capture the tag name:
var regex = new RegExp("<(" + tagname + ")>(.*)</" + tagname + ">", "gi");
$("textarea").val().replace(regex, "<$1>" + textVariable + "</$1>");