あなたはこのようにすることができます...
var str = "345,456,678,345,345,678,343,232",
last_idx = str.lastIndexOf(345);
str = str.replace(/345/g, function(s, i) { return i === last_idx ? '' : s; });
@Crayon Violentが指摘したようにRegExp
、変数を統合する場合は、コンストラクターから正規表現を構築する必要があります。
function removeLast(str, v) {
var re = new RegExp(v, 'g'),
last_idx = str.lastIndexOf(v);
return str.replace(re, function(s, i) { return i === last_idx ? '' : s; });
}
削除する値が文字列としての正規表現であり、それを に使用する必要がある場合は、代わりにlastIndexOf
を使用できます.exec()
。
function removeLast(str, v) {
var re = new RegExp(v, 'g'),
match,
last_idx;
while (match = re.exec(str))
last_idx = re.lastIndex - match.length
return str.replace(re, function(s, i) { return i === last_idx ? '' : s; });
}
ただし、 を使用する場合.exec()
は、常にループ内で新しい文字列を構築できます。ループが完了した後、最後の一致を確実に除外する必要があります。