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

时间:2014-06-15 20:45:07

标签: javascript regex

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

这不起作用:

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

为什么第一个版本没有工作,我该如何解决?

3 个答案:

答案 0 :(得分:1)

我修改了输入字符串和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);

答案 1 :(得分:0)

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

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

请参阅demo

答案 2 :(得分:0)

如果您确定要匹配的名称位于字符串的末尾,则可以使用:

/(Kenneth Auchenberg)\s*$/

注意:您的代码中存在拼写错误。最后一个Kenneth Auchenberg写为Kenneth Auchenber(最后没有' g')