私の目標は、例えば変更することです:から2x
。私がしようとしたことは次のとおりです:2倍を正規表現で2 * xに変更しますか?これで
string.replace(new RegExp("[0-9]+x", "g"), //what here?);
しかし、それを置き換えるものを理解することはできません。私はnumber + "*" + x
を入れることができるように数字とx
への参照が必要です。 RegExを使用せずに他のソリューションを知っていれば、それも問題ありません。
私の目標は、例えば変更することです:から2x
。私がしようとしたことは次のとおりです:2倍を正規表現で2 * xに変更しますか?これで
string.replace(new RegExp("[0-9]+x", "g"), //what here?);
しかし、それを置き換えるものを理解することはできません。私はnumber + "*" + x
を入れることができるように数字とx
への参照が必要です。 RegExを使用せずに他のソリューションを知っていれば、それも問題ありません。
使用この:すべての
string.replace(/(\d+)(x)/g, '$1*$2')
まず、あなたは/[0-9].other.data/
のように、ちょうど/
で正規表現を囲み、new RegExp(...)
を使用する必要はありません。上記のあなたの例のように、それはグローバルにするために、終了後/
g
を使用してください - /this.is.a.global.regex/g
第二に、\d
は、第二引数で[0-9]
の省略形です、それは$1
と$2
を持っています。これらはそれぞれ1
stと2
ndキャプチャグループを参照しています。
string = '2x'
new_string = string.replace(/(\d+)(x)/g, '$1*$2')
document.write(new_string)
短いバージョン:
string = '2x'
new_string = string.replace(/\d+(?=x)/, '$&*')
document.write(new_string)
nth
キャプチャグループ
デモからのデータが含まれています
あなたは第二後方参照を回避することができます。置換パターンに 'x'を使うだけです。 @Yoshi –
を:それは私が知っているWiktorStribiż[email protected]ここでは皆:) –
への質問ですが、私は1つを選択しなければならなかった、すべての答えをスパムしたくありませんでした; P – Yoshi
あなたは一つだけ見て数およびX
document.write('2x'.replace(/\d(?=x)/g, "\$&*"));
'$ 0'はJSでは使用できません。あなたは' $& 'が必要です。 –
@WiktorStribiżew、ie11では '$ 0'と連動してくれています。ありがとうございます。 –
あなたは '2x2'>' 2 * x2'を意味しますか? Javascriptが後読みをサポートしていた場合 –
私は(?= X)(<= \ dは?) '行わ'と '*'とゼロ幅を交換していたでしょう。 'X'は、既知の、リテラルサブパターンであるため、[デモ](https://regex101.com/r/cI1uZ7/1) –