使用部分正则表达式结果集进行匹配

时间:2013-07-11 11:29:57

标签: javascript regex replace

使用正则表达式的任何子结果构成整个正则表达式是否可行,请考虑以下代码段:

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方法调用,但只有一个方法会很酷。

由于


不要考虑代码的可读性。

2 个答案:

答案 0 :(得分:1)

反向引用,例如\1听起来像你正在寻找的(如果我理解你的问题)。

答案 1 :(得分:1)

这个正则表达式适合你吗?

ret.replace(/[{]+(.*?)[}]+/g, '{{$1}}')

p.s。:我不确定你想要实现的目标。