正则表达式在匹配中替换所有匹配x次

时间:2013-12-22 23:04:15

标签: javascript regex

我正在使用javascript(来自node.js),我有一个字符串:

:: something: something
::: something: more

我想用一个& nbsp;替换所有个人“:”a a;但我不希望中间的':'被替换。如果有两个冒号,那么只有两个空格,如果只有一个;一个空间(你明白了...) 所以字符串应该成为:

   something: something
    something: more

我试过这个:

replace(/(:)|([^\n]*\n)/g," $2")

非常接近工作,但是它在每行的开头放置了一个额外的空间,并且在每一行之后需要换行,否则它将替换该行上的所有“:”。在示例中使用此代码,它返回:

    something: something
    something  more

我该怎么办?

1 个答案:

答案 0 :(得分:3)

试试这个:

replace(/^\s*(:+)/gm,function(_,m) {return new Array(m.length+1).join(" ");});

“新阵列”云雀基本上是一种像PHP str_repeat这样的廉价方式。重要的是,这只会在一行开头替换冒号。

编辑以允许前导空格。