如何在正则表达式之间使用动态变量

时间:2017-02-09 06:54:03

标签: javascript regex node.js

我有一个字符串,其中包含一些日期和一些逗号分隔的值,如此

var a = "1,13,20160308,200500000012016,10,Pending,01-02-2016,1|#|1,13,20160418,200500000012016,10,Pending,08-03-2016,1|#|1,13,20160623,200500000012016,10,Pending,18-04-2016,1|#|1,13,20160803,200500000012016,10,Pending,23-06-2016,1|#|1,13,20160912,200500000012016,10,Pending,03-08-2016,1|#|1,13,20161022,200500000012016,10,Pending,12-09-2016,1|#|1,13,20161129,200500000012016,10,Pending,22-10-2016,1|#|1,13,20170110,200500000012016,10,Pending,29-11-2016,1|#|1,13,20170215,200500000012016,10,Pending,10-01-2017,1|#|15-02-2017 APPEARANCE"

正则表达式: /(.)*?01-02-2016(.)*?\|\#\|/igm 通过使用这个正则表达式,我可以删除字符串中不必要的部分。

现在我想动态更改03-08-3016(日期)。如果我使用 var date =“01-02-2016” var reg = /(.)*?${date}(.)*?\|\#\|/igm;

如果你在console.log中注册,你会在下面得到这样的结果 console.log(reg) ----> 输出:'/(。)?01-02-2016(。)?|#| / igm'

预计最终输出将删除最高01-02-2016,1 |#|

1 个答案:

答案 0 :(得分:1)

使用此功能。

var regex="(.)*?01-02-2016(.)*?\\|\\#\\|";
var rx=new RegExp(regex,"igm");
console.log(rx);
//Then when do you want to change,
regex=regex.replace("01-02-2016","03-02-2016");
rx=new RegExp(regex,"igm");
console.log(rx);

JavaScript有两种方法可以制作正则表达式。 1.用斜杠写吧// 2.使用新的RexExp(字符串)生成字符串;

如果你从字符串中创建它,你可以给出约束(“global,incase,etc”)作为第二个参数,如上所述。 而且你必须双重转义(\)转义字符。