我正在尝试根据这样的正则表达式替换多个匹配的组
var paramRegex = /{\s*\[(\w*)\]\s*(\w*)\s*\(([\w\s]*)\)\s*}/i;
// should match {[group1] group2 (group3)}
var emptyParam = '{[]()}';
emptyParam.replace(paramRegex, 'a $1 b $2 c $3');
为什么这会导致 'ab c' ?为什么中括号、大括号和圆括号消失了?
我期待这会打印 '{[a]b(c)}'
替换的时候我们通常会匹配并捕获我们需要保留的内容(以便能够通过反向引用引用捕获的值)并且仅匹配您不需要保留的内容。
在您的情况下,您只需将标点符号放入替换模式中即可:
.replace(/{\s*\[(\w*)\]\s*(\w*)\s*\(([\w\s]*)\)\s*}/g, "{[a]$1b$2(c)$3)}")
^^ ^ ^ ^ ^^
See the 正则表达式演示 https://regex101.com/r/xBtjKO/1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)