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

时间:2015-02-18 14:23:25

标签: javascript regex

我有以下字符串:

"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"

我想使用正则表达式来过滤,让我们说" u_1"但它不应该找到" u_11"或" u_13",即它需要完全匹配。到现在为止还挺好。 此外,我想要过滤的字符串将作为变量传递。到目前为止我所拥有的是:

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);

不幸的是,使用setName变量我的正则表达式出了问题,但我无法弄清楚如何修复它。

1 个答案:

答案 0 :(得分:3)

删除正斜杠并再次退出反斜杠。修饰符作为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' ]