2012-09-12 46 views
5

基本上,我正在更新舊的Web應用程序以符合多瀏覽器。所有的地方原來的程序員使用 -正則表達式替換字符串的多個部分(在Visual Studio 2012中)

document.all.element 

正如我明白了「所有」是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

我不認爲你需要一個正則表達式。

只需通過document.getElementById文本替換document.all.element替換對話框

+0

在這種情況下不起作用,我需要用括號和引號括住「元素」部分。 –

+0

你能告訴我一個不適用的例子嗎? –

+0

好吧,我明白了。你document.all.elements被索引訪問,這不是一個函數 –

4

在Visual Studio 2010和更早版本的正則表達式語法如下:

要標記的表達式中使用{ },引用第一個標籤進行更換使用\1

你的情況,你需要找到:

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

,並替換:

document.getElementById('\1') 

在Visual Studio 2012的正則表達式語法已更改爲:

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}表達),所以該標識符將被「粘貼在」雙引號中。