Нужно динамически с помощью переменных и регулярного выражения поменять последнее значение в строке.
В первом случае работает во втором нет.
За ответ спасибо заранее.
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
окажутся символы, являющиеся специальными метасимволами регулярных выражений, которые находят сами себя только если они экранированы.
См. демо регулярного выражения.
Если в строке могут быть знаки перевода на новую строку, замените (?:(?!<переменная>).)*
на (?:(?!<переменная>)[^])*
.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Нужно чтобы в saidbar'е отображать файлы HTML,CSS,JS,PHP, а в контенте содержимое этого файлаКак это сделать?