5

基本上我正在更新一个旧的网络应用程序以兼容多浏览器。原始程序员使用过的所有地方-

document.all.element

据我了解,“.all”只是 IE,在 IE 4 中引入。符合标准的“.getElementById”函数在 IE 5 中引入。我想将上述语句的实例更改为 -

document.getElementById("element")

我将如何形成这个正则表达式,特别是使用 Visual Studio 的“查找和替换”对话框?

4

4 回答 4

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')
于 2012-09-12T10:11:55.137 回答
2

我不确定这是否是我使用 Visual Studio 2012 RC 的问题,但使用大括号无法匹配任何内容。

我最终使用了 find 表达式 -

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

和替换

document.getElementById("$1")

“$1”指的是括号中的表达式。

谢谢你们的帮助。

于 2012-09-12T10:56:24.893 回答
1

搜索

[.]all[.]{:i}

并替换为

.getElementById("\1")

点周围的方括号.是为了确保它不会被解释为元字符(您可以\.改用)。:i是 Visual Studio 的标识符符号

替换字符串中的\1引用第一个标记的表达式(即{:i}表达式),因此标识符将被“粘贴”在双引号内。

于 2012-09-12T10:12:55.743 回答
0

我认为您不需要正则表达式。

只需在文本替换对话框中替换document.all.elementdocument.getElementById

于 2012-09-12T10:09:37.353 回答