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

omg*_*omg 9 javascript regex

例如:

var str="<br>hi<br>hi";
Run Code Online (Sandbox Code Playgroud)

替换最后一个(第二个)<br>,

改变成 "<br>hihi"

我试过了:

str.replace(/<br>(.*?)$/,\1);
Run Code Online (Sandbox Code Playgroud)

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

Gum*_*mbo 13

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

str.replace(/(.*)<br>/, "$1");
Run Code Online (Sandbox Code Playgroud)

但缺点是它会导致回溯.

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

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


Gre*_*reg 3

我想你想要这个:

str.replace(/^(.*)<br>(.*?)$/, '$1$2')
Run Code Online (Sandbox Code Playgroud)

这贪婪地匹配从开始到 a 的所有内容<br>,然后是 a <br>,然后不贪婪地匹配所有内容到结尾。