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

这不起作用:

var str = '@[Kenneth Auchenberg](contact:1) @[[email protected]](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

为什么第一个版本不起作用,如何解决?

最佳答案

我已经修改了您的输入字符串和正则表达式代码。
首先,修改后的[\s\S]*Kenneth Auchenbergg丢失了Kenneth Auchenberg';

var str = '@[Kenneth Auchenberg](contact:1) @[[email protected]](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);

08-17 03:19