javascript替换最后一次出现的字符串



我读过很多问答;就像在StackOverflow中一样,我仍然很难获得RegEX。我有字符串12_13_12

如何用aa替换上次出现的12。

最终结果应为12_13_aa

我真的很想好好解释一下你是怎么做到的。

您可以使用此替换:

var str = '12-44-12-1564';
str = str.replace(/12(?![sS]*12)/, 'aa');
console.log(str);

解释:

(?!            # open a negative lookahead (means not followed by)
   [sS]*     # all characters including newlines (space+not space)
               # zero or more times
   12
)              # close the lookahead

换句话说,该模式意味着:12后面不跟另一个12,直到字符串结束

newString = oldString.substring(0,oldString.lastIndexOf("_")) + 'aa';

使用此String.replace并确保输入$的末尾在末尾:

repl = "12_13_12".replace(/12(?!.*?12)/, 'aa');

编辑:在Regex:中使用变量

var re = new RegExp(ToBeReplaced);
repl = str.replace(re, 'aa');

最新更新