10

我必须传递变量的 RegExp 值并指向一个单词边界。我有一个要检查的字符串是否包含变量值。我不知道如何将正则表达式作为变量值和单词边界属性传递给正则表达式。

所以是这样的:

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

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

4

2 回答 2

14

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

正如@RobW 提到的,您可能需要转义sa.

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

于 2012-09-30T17:17:31.487 回答
7

如果你想获得所有的出现(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.
于 2018-06-13T02:11:39.973 回答