私は多くを読んだQ & StackOverflowのように、私はまだRegExを取得するのに苦労しています。 私は文字列12_13_12
を持っています。javascript最後の文字列を置換する
12の最後のオカレンスを、aa
と置き換えるにはどうすればよいですか?
最終結果は12_13_aa
である必要があります。
あなたのやり方についての良い説明が本当に好きです。
私は多くを読んだQ & StackOverflowのように、私はまだRegExを取得するのに苦労しています。 私は文字列12_13_12
を持っています。javascript最後の文字列を置換する
12の最後のオカレンスを、aa
と置き換えるにはどうすればよいですか?
最終結果は12_13_aa
である必要があります。
あなたのやり方についての良い説明が本当に好きです。
newString = oldString.substring(0,oldString.lastIndexOf("_")) + 'aa';
使用このString.replace
とあなたが最後に入力$
の終わりを持っていることを確認してください。
repl = "12_13_12".replace(/12(?!.*?12)/, 'aa');
EDIT:正規表現で変数を使用するには:
var re = new RegExp(ToBeReplaced);
repl = str.replace(re, 'aa');
実際には –
の例だったが、もしそれが正しいとすれば、$は数字/文字列12の最後の出現を意味するのだろうか?そうだから、それは働くと思う。 –
@VeraGavriel:はい、正しいです。 – anubhava
することができますこれを交換してください:
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続きません。
+1正規表現のソリューションを使用し、詳細な説明を追加します。 –
(プラス1)検索文字列を末尾($)にする必要がないため –
最後の数字は常に2桁ですか? –
@GintasK no ..それは常に2桁の数字を含んでいるので、他の数字の組み合わせは –
'12_13_12'.replace(/ 12([^ 1] [^ 2])* $ /、' aa ')// 12それに続く12のパターンではない – TheOne