使用字符串替换将变量传递给正则表达式
我在字符串替换中有一个复杂的regEx,我想使用一个名为“tagname”的变量而不是单词Category,但我不知道如何做到这一点。
$("textarea").val().replace(/\(.*)\/gi, "TextVariable");
我尝试过类似的东西,但它在第一个参数中没有用。
$("textarea").val().replace("/\(.*)\/gi", "" + TextVariable + "");
您可以将RegExp
构造函数与字符串模式和标志一起使用:
var regex = new RegExp("<" + tagname + ">(.*)" + tagname + ">", "gi"); $("textarea").val().replace(regex, "<" + tagname + ">" + TextVariable + "" + tagname + ">");
使用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>");
但请记住, 使用正则表达式解析xml / html是一个很好的想法