2012-09-12 14 views
5

基本的には、古いWebアプリケーションをマルチブラウザ対応に更新しています。すべての場所で、元のプログラマが使用している -文字列の複数の部分を置換する正規表現

document.all.element 

を私は「.ALLは」IEのみであることを理解したよう、IE 4で導入された標準規格に準拠し、「.getElementById」機能は、私が欲しいIE 5で導入されました上記のステートメントのインスタンスを変更する -

document.getElementById("element") 

どのように私は、特にVisual Studioのの「検索と置換」ダイアログを使用して、この正規表現を形成するのでしょうか?

答えて

2

これは私にVisual Studio 2012 RCを使用しているが、中括弧を使って何かとのマッチングに問題があるかどうかはわかりません。

私が見つけ表現使用して終了 -

document\.all\.([a-zA-Z0-9]+) 

と交換

document.getElementById("$1") 

"$ 1" は括弧表現を指します。

あなたの助けを借りてくれてありがとう。

+0

そうかもしれないが、私はVS 2010に慣れていて、あなたは2012年にいるとは言及していない。 –

+0

私は2012年を使用していたと言いましたが、この状況では違いが生じたとは思わなかった。今私はあなたの答え(とdasblinkenlightの)がVisual Studioの以前のバージョンで正しいと思って、状況を反映させるために自分の質問を編集したり(正しい答えとしてマークする) –

+0

私はこれもどちらかとは思わないでしょう、あなたの答えを受け入れることを自由に感じてください;) –

0

正規表現は必要ありません。

だけのVisual Studio 2010では、ダイアログ

+0

このような状況では動作しません。「要素」部分を角かっこで囲む必要があります。 –

+0

これがうまくいかない場合の例を教えていただけますか? –

+0

私はそれを得る。あなたはdocument.all.elementsにインデックスでアクセスしますが、これは関数ではありません –

4

を置き換えるテキストにdocument.getElementByIddocument.all.elementを交換し、それ以前の正規表現の構文は以下の通りです:

は、交換用に使用\1のため最初のタグを参照するために、表現の使用{ }にタグを付けるには

あなたが見つける必要がある、あなたの場合は

document\.all\.{[a-zA-Z0-9]+} 

とで置き換える:Visual Studioの2012年

document.getElementById('\1') 

正規表現の構文は、に変更されました:

document\.all\.([a-zA-Z0-9]+) 
document.getElementById('$1') 
+1

Visual Studio 2012のタグは '{}'ではなく '()'ではありませんか?それはVisual Studioの古いバージョンです。 –

1

検索

[.]all[.]{:i} 

用とに置き換え

.getElementById("\1") 

ドット.の角括弧は、それがメタキャラクタとして解釈されていないことを確認することです(代わりに\.を使用できます)。 :iは、識別子のVisual Studioのシンボルです。置換文字列に\1

最初式(すなわち{:i}式)をタグ付けされた参照ので、識別子は二重引用符の内側「に貼り付け」されます。