我需要动态创建一个在匹配函数javascript中使用的正则表达式。 怎么可能?
var p = "*|";
var s = "|*";
"*|1387461375|* hello *|sfa|* *|3135145|* test".match(/"p"(\d{3,})"s"/g)
这将是正确的正则表达式:/\*\|(\d{3,})\|\*/g
即使我向p和s添加反斜杠它也不起作用。有可能吗?
答案 0 :(得分:1)
RegExp是你的朋友:
var p = "\\*\\|", s = "\\|\\*"
var reg = new RegExp(p + '(\\d{3,})' + s, 'g')
"*|1387461375|* hello *|sfa|* *|3135145|* test".match(reg)
答案 1 :(得分:0)
您可以先使用变量构造一个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|*"]