我需要动态创建正则表达式并在javascript的match函数中使用。这可能吗?
var p = "*|";
var s = "|*";
"*|1387461375|* hello *|sfa|* *|3135145|* test".match(/"p"(\d{3,})"s"/g)
这将是正确的正则表达式:/\*\|(\d{3,})\|\*/g
即使我在 p 和 s 中添加反斜杠也不起作用。这可能吗?
我需要动态创建正则表达式并在javascript的match函数中使用。这可能吗?
var p = "*|";
var s = "|*";
"*|1387461375|* hello *|sfa|* *|3135145|* test".match(/"p"(\d{3,})"s"/g)
这将是正确的正则表达式:/\*\|(\d{3,})\|\*/g
即使我在 p 和 s 中添加反斜杠也不起作用。这可能吗?
new
运算符,但仍然建议使用它。 - theftpreventionRegExp
时,需要双重转义。 - Daryl Ginn您可以首先使用变量构建一个RegExp
对象。同时,在形成RegExp
对象时,请记得转义*
和|
:
var p = "*|";
var s = "|*";
var re = new RegExp(p.replace(/([*|])/g, '\\$1')
+ "(\\d{3,})" +
s.replace(/([*|])/g, '\\$1'), "g");
var m = "*|1387461375|* hello *|sfa|* *|3135145|* test".match(re);
console.log(m);
//=> ["*|1387461375|*", "*|3135145|*"]
p
、"(\d{3,})"
和s
连接起来(根据 https://dev59.com/OHA75IYBdhLWcg3wJFmY 转义p
和s
)。 - Slippery Pete