我有以下字符串:
"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变量我的正则表达式出了问题,但我无法弄清楚如何修复它。
答案 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' ]