0

前後に角かっこなしの部分文字列(id)を置き換える解決策を探しています。

これが私の現在のコードです。非常に単純です。

'deal[ptions_attributes][0][price]'.replace(/\[\d+\]/, '[new_id]'));
result: deal[ptions_attributes][new_id][price]

したがって、新しいIDで角かっこを使用することはあまりありません-'[new_id]'で部分文字列を置き換えます。'new_id'を置き換えてクリーンに保つときに、最初の'['ブラケットを無視する方法はありますか?

4

4 に答える 4

2

[...]これは、数字で終わる他の文字列がないことを前提としています

/\d+(?=\])/
于 2012-12-06T13:17:50.483 に答える
1

ルックアラウンドでこれを行うことができます:

/(?<=\[)\d+(?=\])/

マッチが成功するために存在しなければならない括弧の間の数字とマッチしますが、マッチの一部にはなりません。

しかし、コメントで言われているように、後読み ((?<=...)は javascript では機能しません。したがって、あなたが望むことが可能かどうかはわかりません。

于 2012-12-06T13:15:53.113 に答える
0

あなたはこのようなことを試すことができます。

'deal[ptions_attributes][0][price]'.replace(
    /(\[)\d+(\])/,
    function(matchedString,firstCaptureGroup,secondCaptureGroup){
        return firstCaptureGroup + 'new_id' + secondCaptureGroup;
    }
);

基本的に、キャプチャグループで「[」と「]」をキャプチャしてから、それらを出力に戻します。これにより、正しいコンテンツを確実にキャプチャできますが、出力文字列に角かっこを含める必要はありません。これを簡単に拡張して、置き換えるIDの前後の文字列に一致させることができます。

于 2012-12-06T13:32:49.057 に答える
0

問題の正確な性質についてはわかりませんが、使用できません:

 '[' + 'new_id' + ']'

これにより、目的の代わりに変数を使用できます'new_id'

于 2012-12-06T13:36:04.977 に答える