使用单词边界将变量传递给RegExp

srg*_*701 7 javascript regex

我必须传递给变量的RegExp值并指向一个单词边界.如果它包含变量值,我有一个要检查的字符串.我不知道如何将regexp作为变量值和单词边界属性传递给我.

所以像这样:

var sa="Sample";
var re=new RegExp(/\b/+sa);
alert(re.test("Sample text"));
Run Code Online (Sandbox Code Playgroud)

我尝试了一些方法来解决问题,但仍然不能这样做:(

Mar*_*cus 8

用这个: re = new RegExp("\\b" + sa)

正如@RobW所说,你可能需要逃避sa.

看到这个:Javascript中是否有RegExp.escape函数?

  • `eval`?有没有听说过`RegExp`构造函数? (2认同)

JBa*_*lin 6

如果您希望获得所有出现(g),请不区分大小写(i),并使用边界,使其在另一个单词(\\b)中不再是一个单词:

re = new RegExp(`\\b${sa}\\b`, 'gi');
Run Code Online (Sandbox Code Playgroud)

例:

let inputString = "I'm John, or johnny, but I prefer john.";
let swap = "John";
let re = new RegExp(`\\b${swap}\\b`, 'gi');
console.log(inputString.replace(re, "Jack")); // I'm Jack, or johnny, but I prefer Jack.
Run Code Online (Sandbox Code Playgroud)