1

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

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}}

是否可以使用第一个结果集制作第二个,然后再次制作第三个:

/(^|[^{}])($1)([^{}]|$)/g, '$1$2$2$3'
//         $1 - or something similarly

我很清楚我可以使用乘法·replace调用,但只要有一个就很酷了。

谢谢


不要考虑代码的可读性。

4

2 回答 2

1

这个正则表达式对你有用吗?

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

ps:我不确定您要达到的目标。

于 2013-07-11T11:55:06.390 回答
1

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

于 2013-07-11T11:32:49.237 回答