Ответ 1
newString = oldString.substring(0,oldString.lastIndexOf("_")) + 'aa';
Я прочитал много Q & Как и в StackOverflow, и мне все еще сложно получить Regex.
У меня строка 12_13_12
.
Как я могу заменить последнее вхождение 12 с помощью aa
.
Конечный результат должен быть 12_13_aa
.
Мне бы очень хотелось получить хорошее объяснение о том, как вы это сделали.
newString = oldString.substring(0,oldString.lastIndexOf("_")) + 'aa';
Вы можете использовать эту замену:
var str = '12-44-12-1564';
str = str.replace(/12(?![\s\S]*12)/, 'aa');
console.log(str);
объяснения:
(?! # open a negative lookahead (means not followed by)
[\s\S]* # all characters including newlines (space+not space)
# zero or more times
12
) # close the lookahead
Другими словами, шаблон означает: 12, за которым не следует еще 12 до конца строки.
Используйте этот String.replace
и убедитесь, что у вас есть конец ввода $
в конце:
repl = "12_13_12".replace(/12(?!.*?12)/, 'aa');
EDIT: Чтобы использовать переменную в Regex:
var re = new RegExp(ToBeReplaced);
repl = str.replace(re, 'aa');