我正在使用javascript(来自node.js),我有一个字符串:
:: something: something
::: something: more
我想用一个& nbsp;替换所有个人“:”a a;但我不希望中间的':'被替换。如果有两个冒号,那么只有两个空格,如果只有一个;一个空间(你明白了...) 所以字符串应该成为:
something: something
something: more
我试过这个:
replace(/(:)|([^\n]*\n)/g," $2")
非常接近工作,但是它在每行的开头放置了一个额外的空间,并且在每一行之后需要换行,否则它将替换该行上的所有“:”。在示例中使用此代码,它返回:
something: something
something more
我该怎么办?
答案 0 :(得分:3)
试试这个:
replace(/^\s*(:+)/gm,function(_,m) {return new Array(m.length+1).join(" ");});
“新阵列”云雀基本上是一种像PHP str_repeat
这样的廉价方式。重要的是,这只会在一行开头替换冒号。
编辑以允许前导空格。