JavaScript正则表达式模式与变量连接

JavaScript正则表达式模式与变量连接,javascript,regex,Javascript,Regex,如何创建与变量连接的正则表达式模式,如下所示: var test ="52"; var re = new RegExp("/\b"+test+"\b/"); alert('51,52,53'.match(re)); 谢谢 字符串文字中的\b是退格字符。将正则表达式放入字符串文字时,需要进行一轮转义: var re = new RegExp("\\b"+test+"\\b"); (在此上下文中,您也不需要/。您可以使用 /(^|,)52(,|$)/.test('51,52,53') 但我

如何创建与变量连接的正则表达式模式,如下所示:

var test ="52";
var re = new RegExp("/\b"+test+"\b/"); 
alert('51,52,53'.match(re));
谢谢

字符串文字中的
\b
是退格字符。将正则表达式放入字符串文字时,需要进行一轮转义:

var re = new RegExp("\\b"+test+"\\b"); 
(在此上下文中,您也不需要
/

您可以使用

/(^|,)52(,|$)/.test('51,52,53')
但我建议使用

var list = '51,52,53';
function test2(list, test){
    return !((","+list+",").indexOf(","+test+",") === -1)
}
alert( test2(list,52) )
使用ES2015(又称ES6),您可以在构建时使用:

let test='53'
const regexp=new regexp(`\\b${test}\\b`,'gi')//显示如何传递可选标志

console.log('51,52,53,54'.match(regexp))
在许多地方,内置类型的构造函数可以与
new一起使用,也可以不与
new一起使用。但是,为了与其他对象保持一致,在这些对象中,这可能不成立,并且一般来说,为了清晰起见,我总是使用
new
。另一种方法是使用单引号,以便清晰明了,因此不需要逃避反斜杠:
new RegExp('\b'+test+'\b')您仍然需要避开反斜杠。在JavaScript中,单引号与双引号没有不同的转义规则(与PHP不同)。这个答案也解决了同样的问题,当试图在变量上使用.match()和.replace()JS regexing函数时。这正是我想要的。关于
的部分在将正则表达式放入字符串文字时,您需要再进行一轮转义
;是否有任何关于此的背景信息(原因)?输入错误:Regexp必须是Regexp
var list = '51,52,53';
function test2(list, test){
    return !((","+list+",").indexOf(","+test+",") === -1)
}
alert( test2(list,52) )