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

时间:2012-09-30 17:15:10

标签: javascript regex

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

这样的事情:

var sa="Sample";
var re=new RegExp(/\b/+sa);
alert(re.test("Sample text"));

我尝试了一些方法来解决问题,但仍然无法解决问题:(

2 个答案:

答案 0 :(得分:7)

使用此:re = new RegExp("\\b" + sa)

正如@RobW所提到的,你可能需要逃避sa

请参阅:Is there a RegExp.escape function in Javascript?

答案 1 :(得分:3)

如果要获取所有出现次数(g),请不区分大小写(i),并使用边界使其不是另一个单词中的单词(\\b) :

re = new RegExp(`\\b${sa}\\b`, 'gi');

示例:

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.
相关问题