Нужно динамически с помощью переменных и регулярного выражения поменять последнее значение в строке.
В первом случае работает во втором нет.
За ответ спасибо заранее.
var str01 = "200_String_200_String";
var str02 = "200_String_200_String_20_String";
var mx = '200';
var dx = '400';
var str1 = str01.replace(new RegExp('200([^200]*)$', ''), dx + '$1');
var str2 = str02.replace(new RegExp('' + mx + '([^' + mx + ']*)$', ''), dx + '$1');
document.getElementById('ok1').innerHTML = str1;
document.getElementById('ok2').innerHTML = str2;
<div id="ok1"></div>
<div id="ok2"></div>
Одним из возможных решений является "жадный" "умеренный" квантификатор (англ. "tempered greedy token") (?:(?!<переменная>).)*:
var str01 = "200_String_200_String";
var str02 = "200_String_200_String_20_String";
var mx = '200';
var dx = '400';
var str1 = str01.replace(new RegExp('200((?:(?!200).)*)$', ''), dx + '$1');
var str2 = str02.replace(new RegExp('' + mx + '((?:(?!' + mx.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') + ').)*)$', ''), dx + '$1');
document.getElementById('ok1').innerHTML = str1;
document.getElementById('ok2').innerHTML = str2;
<div id="ok1"></div>
<div id="ok2"></div>
На всякий случай, я добавил .replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), если в переменной mx окажутся символы, являющиеся специальными метасимволами регулярных выражений, которые находят сами себя только если они экранированы.
См. демо регулярного выражения.
Если в строке могут быть знаки перевода на новую строку, замените (?:(?!<переменная>).)* на (?:(?!<переменная>)[^])*.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники