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

Kom*_*ang 78 javascript regex

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

var test ="52";
var re = new RegExp("/\b"+test+"\b/"); 
alert('51,52,53'.match(re));
Run Code Online (Sandbox Code Playgroud)

谢谢

bob*_*nce 128

var re = new RegExp("/\b"+test+"\b/"); 
Run Code Online (Sandbox Code Playgroud)

\b在字符串文字中是退格字符.将正则表达式放在字符串文字中时,您需要再循环一次:

var re = new RegExp("\\b"+test+"\\b"); 
Run Code Online (Sandbox Code Playgroud)

(//在这种情况下你也不需要.)

  • 在很多地方,内置类型的构造函数可以使用或不使用`new`.但是,为了与其他可能不成立的对象保持一致,并且通常清晰,我总是使用`new`. (16认同)
  • 你仍然需要逃避反斜杠.单引号没有不同的转义规则来加倍JavaScript中的引号(不像PHP). (3认同)

Tap*_*boy 15

使用 ES2015(又名 ES6),您可以在构造RegExp时使用模板文字

let test = '53'
const regexp = new RegExp(`\\b${test}\\b`, 'gi') // showing how to pass optional flags
console.log('51, 52, 53, 54'.match(regexp))
Run Code Online (Sandbox Code Playgroud)

  • 拼写错误:正则表达式必须是正则表达式 (3认同)

Lau*_*uri 7

您可以使用

/(^|,)52(,|$)/.test('51,52,53')
Run Code Online (Sandbox Code Playgroud)

但我建议使用

var list = '51,52,53';
function test2(list, test){
    return !((","+list+",").indexOf(","+test+",") === -1)
}
alert( test2(list,52) )
Run Code Online (Sandbox Code Playgroud)