2009-08-11 14 views
1

"Field"という単語に一致しない文字列の場合は、角括弧内の数字をどのように置き換えることができますか?したがって、 'SomethingElse'と 'SomethingMore'の中の数字は新しい値に置き換えることができますが、 'Field'という言葉の右側の括弧で囲まれた値には触れません。 「Field」という言葉は常に同じであるため、正規表現ではマジック文字列として参照できます。RegExを使用して角括弧内の値を置き換えます。一致しない部分は

Field[50].SomethingElse[30] 
Field[50].SomethingMore[30] 

ありがとうございます。 PS。 JavaScriptを使用する。

+0

を役に立てば幸い文字列は常に上記のフォーマットになりますか?つまり、文字列の最後に常に変更したいブラケットですか? – Salgar

+0

Salgarがありません。文字列の真ん中にある可能性があります。 – GONeale

答えて

1

は、あなたが「evalの」と文字列操作を使用することができますが、あなたがそのようにしなければならない場合、あなたはそれが間違ってやっている

str.replace(/(Field\[[^\]]*\]\.[^\[]*)\[(.*)\]/g, "$1["+value+"]"); 
+0

ありがとうEldar、非常に遅く受け入れて申し訳ありません。 – GONeale

0

を試してみてください。

var n = 30; 
// conditional logic; 

Field[50].SomethingElse[n] 
Field[50].SomethingMore[n] 

よろしく、 ジョシュア

2
str.replace(/\b((?!Field\[)\w+)\[\d+\]/g, '$1[' + repl + ']'); 
を:あなたが必要とする変数に番号「30」を記憶する

は、それが操作することを可能にする、次のように単に「SomethingElse」と「SomethingMore」にアクセス

1

str.replace(/(?<!Field)\[([\d]*)\]]/g, '$1['+newnumber+']');

これは