如何使用正则表达式替换/拆分动态字符串?

时间:2018-02-12 08:53:34

标签: javascript regex reactjs

假设我得到如下的动态字符串。

#04215: ["#02080=#04217+#04217_DUP5554","#01066=(#01047+#01111+#01048+#01118+#01049+#01050+#01121+#01128+#01131+#01141+#01138+#01148+#01053+#01062+#01054+#02080+#02048+#01064+#01063+#01065+#01051+#01052+#02062+#02069+#02072+#02079)","#02002=#01066","#02007=(#02002+#02003+#02004+#02005+#02006)","#02010=(#02007+#02008+#02009)","#04216+#04216_DUP5554=#04217+#04217_DUP5554","#04215+#04215_DUP5554=#04216+#04216_DUP5554"]

我必须将“#04215 +#04215_DUP5554 =#04216 +#04216_DUP5554”部分作为"#04215_DUP9262=#04216+#04216_DUP9262"。我制作了一个匹配'#04215+#04215_DUP9262=' as '([#][0]["+pgNo+"][0-9]{3}[+][#][0]["+pgNo+"][0-9]{3}[_][D][U][P][0-9]{4}[=])'的正则表达式。我尝试了下面的内容。

考虑我在变量a中得到动态字符串;

var regex2=new RegExp("([#][0]["+pgNo+"][0-9]{3}[+][#][0]["+pgNo+"][0-9]{3}[_][D][U][P][0-9]{4}[=]) ([#][0]["+pgNo+"][0-9]{3}[_][D][U][P][0-9]{4})" ,"g");

a=a.replace(regex2,'$1,$2');

它不是替换字符串。请帮助。

regex2中的 pgNo 是动态的。在目前的情况下,它的价值是'4'。子串是不可能的,因为'='符号太多了。基本上,我必须将“#04215 +#04215_DUP9262 =”之类的事件更改为“#04215_DUP9262 =”

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:/#([0-9]{5})\+#\1/g => $1

在代码示例中,这将是:

let regex = new RegExp('(#' + pgNo + ')\\+\\1', 'g');
let myString = "#04215+#04215_DUP9262=#04216+#04216_DUP9262";

myString = myString.replace(regex, '$1');

在此(#[0-9]{5})将匹配散列后的任意5个字符数,\+与数字之间的“+”匹配,(必须将其转义,否则将其解释为“一个或多个”)前面的标记),\1是对第一个匹配的反向引用。