替换字符串中最后出现的单词

Replace last occurrence of a word within a string

本文关键字:单词 最后 字符串 替换      更新时间:2023-09-26

我正在尝试替换字符串中最后出现的单词。

这行不通:

var str = '@[Kenneth Auchenberg](contact:1) @[kenneth@auchenberg.dk](contact:7) Kenneth Auchenber';
v = str.replace(/Kenneth Auchenberg(?![sS]*Kenneth Auchenberg?)/ , '@[Kenneth Auchenberg](contact:1)');
alert(v);

这个可以正常工作:

var str = '-44-test alue-1564test alue';
str = str.replace(/test alue(?!['s'S]*test alue)/, 'aa');
alert(str);

JSFiddle

为什么第一个版本不能工作,我该如何修复它?

我已经修改了您的输入字符串和regexp代码。首先,修饰后的['s'S]*Kenneth Auchenbergg缺失Kenneth Auchenberg';

var str = '@[Kenneth Auchenberg](contact:1) @[kenneth@auchenberg.dk](contact:7) Kenneth Auchenberg';
v = str.replace(/Kenneth Auchenberg(?!['s'S]*Kenneth Auchenberg?)/ , '@[Kenneth Auchenberg](contact:1)');
alert(v);
var str = '-44-test alue-1564test alue';
str = str.replace(/test alue(?!['s'S]*test alue)/, 'aa');
alert(str);

搜索:Kenneth Auchenberg?(?!g?']|'(contact)

替换:@[Kenneth Auchenberg](contact:1)

看到演示。

如果你确定你想要匹配的名字在字符串的末尾,你可以使用:

/(Kenneth Auchenberg)'s*$/

注意:你的代码中有一个错别字。最后一个Kenneth Auchenberg写成Kenneth Auchenber(末尾缺少'g')。