如何动态创建要在.match Javascript中使用的正则表达式?

如何动态创建要在.match Javascript中使用的正则表达式?,javascript,regex,Javascript,Regex,我需要动态创建一个正则表达式,以便在匹配函数javascript中使用。 那怎么可能呢 var p = "*|"; var s = "|*"; "*|1387461375|* hello *|sfa|* *|3135145|* test".match(/"p"(\d{3,})"s"/g) 这将是正确的正则表达式:/\*\\\\\\(\d{3,})\\\*/g 即使我在p和s上加反斜杠,也不起作用。可能吗?是你的朋友: var p = "*|"; var s = "|*"; "*|1387461

我需要动态创建一个正则表达式,以便在匹配函数javascript中使用。 那怎么可能呢

var p = "*|";
var s = "|*";
"*|1387461375|* hello *|sfa|* *|3135145|* test".match(/"p"(\d{3,})"s"/g)
这将是正确的正则表达式:
/\*\\\\\\(\d{3,})\\\*/g

即使我在p和s上加反斜杠,也不起作用。可能吗?

是你的朋友:

var p = "*|";
var s = "|*";
"*|1387461375|* hello *|sfa|* *|3135145|* test".match(/"p"(\d{3,})"s"/g)
var p = "\\*\\|", s = "\\|\\*"

var reg = new RegExp(p + '(\\d{3,})' + s, 'g')

"*|1387461375|* hello *|sfa|* *|3135145|* test".match(reg)
使动态正则表达式全局化的关键是将其转换为
RegExp
对象,并将
'g'
作为第二个参数传入


.

您可以首先使用变量构造一个
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|*"]

比我快15秒:)。它最终是一个错误的正则表达式,但它与op询问的内容相匹配虽然创建内置对象实例时不需要
new
操作符,但它的语法错误:无效正则表达式:/*(d{3,})\*/:无需重复。我还试着不带p和s逃走success@AlexandruRada编辑。当使用
RegExp
时,您需要双重转义。对,我只是转义,没有工作。只需将
p
“(\d{3,})”和
s
(转义
p
s