我有一句话,我希望只剩下最后一个'和',并删除其他人。
“狮子,老虎,熊,大象”,我想把它变成:
“狮子,老虎,熊和大象”。
我尝试使用像str = str.replace(/and([^and]*)$/, '$1');
这样的正则表达式模式,这显然不起作用。感谢。
答案 0 :(得分:4)
使用this regex:
and (?=.*and)
and
匹配任何后跟空格。空间匹配,因此在更换时将其移除,以防止有2个空格(?=.*and)
是一个预测,意味着它只会跟着.*and
后跟,如果后跟使用此代码:
str = str.replace(/and (?=.*and)/g, '');
答案 1 :(得分:1)
您可以使用正面预测(?=...)
,以查看当前匹配项之前是否还有其他and
。您还需要使用g
使全局正则表达式全局化。
function removeAllButLastAnd(str) {
return str.replace(/and\s?(?=.*and)/g, '');
}
console.log(removeAllButLastAnd("Lions, and tigers, and bears, and elephants"));
答案 2 :(得分:0)
var multipleAnd = "Lions, and tigers, and bears, and elephants";
var lastAndIndex = multipleAnd.lastIndexOf(' and');
var onlyLastAnd = multipleAnd.substring(0, lastAndIndex).replace(/ and/gi, '')+multipleAnd.substring(lastAndIndex);
console.log(onlyLastAnd);