基本上我正在更新一个旧的网络应用程序以兼容多浏览器。原始程序员使用过的所有地方-
document.all.element
据我了解,“.all”只是 IE,在 IE 4 中引入。符合标准的“.getElementById”函数在 IE 5 中引入。我想将上述语句的实例更改为 -
document.getElementById("element")
我将如何形成这个正则表达式,特别是使用 Visual Studio 的“查找和替换”对话框?
基本上我正在更新一个旧的网络应用程序以兼容多浏览器。原始程序员使用过的所有地方-
document.all.element
据我了解,“.all”只是 IE,在 IE 4 中引入。符合标准的“.getElementById”函数在 IE 5 中引入。我想将上述语句的实例更改为 -
document.getElementById("element")
我将如何形成这个正则表达式,特别是使用 Visual Studio 的“查找和替换”对话框?
在 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')
我不确定这是否是我使用 Visual Studio 2012 RC 的问题,但使用大括号无法匹配任何内容。
我最终使用了 find 表达式 -
document\.all\.([a-zA-Z0-9]+)
和替换
document.getElementById("$1")
“$1”指的是括号中的表达式。
谢谢你们的帮助。
搜索
[.]all[.]{:i}
并替换为
.getElementById("\1")
点周围的方括号.
是为了确保它不会被解释为元字符(您可以\.
改用)。:i
是 Visual Studio 的标识符符号。
替换字符串中的\1
引用第一个标记的表达式(即{:i}
表达式),因此标识符将被“粘贴”在双引号内。
我认为您不需要正则表达式。
只需在文本替换对话框中替换document.all.element
为document.getElementById