javascript正则表达式:使用单词边界将变量传递给regexp

javascript regular expression: passing variable to regexp using word boundary

本文关键字:变量 regexp 边界 正则表达式 单词 javascript      更新时间:2023-12-29

我有以下字符串:

"u_1,u_3,u_4,u_5,u_6,u_7,u_8,u_10,u_11,u_13,u_14,u_15,u_16,u_17,u_18,u_20"

我想使用正则表达式来过滤"u1",但它不应该找到"u11"或"u13",也就是说,它需要完全匹配。到目前为止还不错。此外,我要筛选的字符串将作为变量传递。到目前为止,我有以下内容:

var str = "u_1,u_3,u_4,u_5,u_6,u_7,u_8,u_10,u_11,u_13,u_14,u_15,u_16,u_17,u_18,u_20";
var setName = "u_1";
var re = new RegExp('/'b('+setName+')'b/g');
str.match(re);

不幸的是,我的regexp使用setName变量时出现了问题,但我不知道如何修复它。

删除正斜杠并再次转义反斜杠。修饰符在RegExp构造函数中作为单独的参数传递。

var re = new RegExp("''b("+setName+")''b", "g");

示例:

> var str = "u_1,u_3,u_4,u_5,u_6,u_7,u_8,u_10,u_11,u_13,u_14,u_15,u_16,u_17,u_18,u_20";
undefined
> setName = "u_1";
'u_1'
> var setName = "u_1";
undefined
> var re = new RegExp("''b("+setName+")''b", "g");
> re
/'b(u_1)'b/g
> str.match(re)
[ 'u_1' ]