使用正则表达式的任何子结果构成整个正则表达式是否可行,请考虑以下代码段:
var ret = "{hello} {world}";
ret = ret.replace(/(^|[^{}])(\{|\})([^{}]|$)/g, '$1$2$2$3');
ret; // {{hello}} {{world}}
但是当我将}{
放在一起时,上面的正则表达式会失败,这也是有道理的,因为我正在测试}{
或字符串的开头,然后是{}
之一然后再没有{}
或字符串结尾:
var ret = "{hello}{world}";
ret = ret.replace(/(^|[^{}])(\{|\})([^{}]|$)/g, '$1$2$2$3');
ret; // {{hello}{world}}
是否可以使用frist结果集来制作第二个,然后再次制作第三个:
/(^|[^{}])($1)([^{}]|$)/g, '$1$2$2$3'
// $1 - or something similarly
我很清楚我可以使用多次·replace
方法调用,但只有一个方法会很酷。
由于
不要考虑代码的可读性。
答案 0 :(得分:1)
反向引用,例如\1
听起来像你正在寻找的(如果我理解你的问题)。
答案 1 :(得分:1)
这个正则表达式适合你吗?
ret.replace(/[{]+(.*?)[}]+/g, '{{$1}}')
p.s。:我不确定你想要实现的目标。