以下返回' entiy'。我希望它返回' entity'。我怎样才能做到这一点?
'entities '.replace(/\w(ies)(?:[\W|$|_])+/g, 'y');
答案 0 :(得分:3)
您可以将\w
更改为\B
,以确认没有字边界。
console.log('entities '.replace(/\Bies\b/g, 'y'));
答案 1 :(得分:2)
在“ies”之前捕捉角色:
'entities '.replace(/(\w)(ies)(?:[\W|$|_])+/g, '$1y');
现在你的问题是关于使用一个函数;你也可以这样做:
'entities '.replace(/(\w)(ies)(?:[\W|$|_])+/g, function(_, before, repl) {
return before + "y";
});
我不知道你想要对“ies”后面的东西做什么;您可以捕获它并将其粘合到替换中,或者使用正向前瞻。由前瞻匹配的输入文本的部分不是与替换操作相关的匹配的一部分。换句话说,预测会根据模式成功或失败,但匹配的字符不会成为“待替换”分组的一部分。