JavaScript取代正则表达式每次出现但最后?

时间:2014-06-16 18:59:38

标签: javascript regex

除了最后一次出现之外,有没有办法在每次出现时使用带replace的正则表达式?

例如,我希望"abc"成为"a|b|c"

我能做到:

"abc".replace(/./g, "$&|");

但这导致a|b|c|。有没有办法来替换除了最后一个之外的每一个事件?或者 n 出现,而不是全局g?或者我是否以错误的方式思考这个问题?

2 个答案:

答案 0 :(得分:5)

使用否定前瞻:

"abc".replace(/.(?!$)/g, "$&|"); // => "a|b|c"

甚至:

"abc".split("").join("|"); // => "a|b|c"

答案 1 :(得分:2)

你可以在没有正则表达式的情况下完成:

var s = "abc";
var r = s.split('').join('|');
//=>"a|b|c"