Javascript 将值传递给正则表达式

Javascript 将值传递给正则表达式,javascript,regex,string,Javascript,Regex,String,我正在尝试用正则表达式[javascript]生成一个函数 请看一看 function ReplaceIt(key) { var KeyCode = /.body\s*\{([^\}]*?)\}/m; // i want to replace the body to the key } var key ="h1"; ReplaceIt(key); 因此,最终结果将是 var Keycode = /.h1\s*\{([^\}]*?)\}/m; 我是javascript的新手,不知道如何搜索其

我正在尝试用正则表达式[javascript]生成一个函数

请看一看

function ReplaceIt(key)
{
var KeyCode = /.body\s*\{([^\}]*?)\}/m; // i want to replace the body to the key
}

var key ="h1";
ReplaceIt(key);
因此,最终结果将是

var Keycode = /.h1\s*\{([^\}]*?)\}/m;
我是javascript的新手,不知道如何搜索其他资源


注意
:朋友们,为什么要删除答案??每个注释/答案都在帮助我们改进,但我们会选择最合适/最好的答案,请不要删除注释/答案。

您可以使用带有字符串的
RegExp
来构建正则表达式。如果以这种方式构建正则表达式,则应转义所有“\”。因此,您的函数可以如下所示:

function ReplaceIt(key)
{
  return RegExp('.'+key+'\\s*\\{([^\\}]*?)\\}','m');
}
var reKey = ReplaceIt('h1'); //=> /.h1\s*\{([^\}]*?)\}/m

可以将
RegExp
与字符串一起使用来构建正则表达式。如果以这种方式构建正则表达式,则应转义所有“\”。因此,您的函数可以如下所示:

function ReplaceIt(key)
{
  return RegExp('.'+key+'\\s*\\{([^\\}]*?)\\}','m');
}
var reKey = ReplaceIt('h1'); //=> /.h1\s*\{([^\}]*?)\}/m

在JSFIDLE中,您没有在
re=newregexp('.+key+'\s*\{([^\}]*?)\},'m')中转义'\'。使用
re=newregexp('.+key+'\\s*\{([^\}]*?)\\}','m')
<代码>错误:第1行出现问题字符36:擒纵机构不良。var re=RegExp('.'+'h'+'\\s*\{([^\}]*?)\\}','m')re=newregexp('.+key+'\s*\{([^\}]*?)\},'m')中转义'\'。使用
re=newregexp('.+key+'\\s*\{([^\}]*?)\\}','m')
<代码>错误:第1行出现问题字符36:擒纵机构不良。var re=RegExp('.'+'h'+'\\s*\{([^\}]*?)\\}','m')