如何在javascript中替换最后一个单词?

时间:2009-05-09 09:59:12

标签: javascript regex

例如:

var str="<br>hi<br>hi";

替换最后一个({2}},

更改为<br>

我试过了:

"<br>hihi"

但这是错的。什么是正确的版本?

3 个答案:

答案 0 :(得分:13)

你可以使用量词贪婪的事实:

str.replace(/(.*)<br>/, "$1");

但缺点是会导致回溯。

另一个解决方案是分割字符串,将最后两个元素放在一起,然后连接部分:

var parts = str.split("<br>");
if (parts.length > 1) {
    parts[parts.length - 2] += parts.pop();
}
str = parts.join("<br>");

答案 1 :(得分:3)

我想你想要这个:

str.replace(/^(.*)<br>(.*?)$/, '$1$2')

贪婪地匹配从开始到<br>,然后是<br>的所有内容,然后不合时宜地将所有内容匹配到最后。

答案 2 :(得分:0)

String.prototype.replaceLast = function(what, replacement) { 
    return this.replace(new RegExp('^(.*)' + what + '(.*?)$'), '$1' + replacement + '$2');
}

str = str.replaceLast(what, replacement);