用于替换字符串多个部分的正则表达式(在Visual Studio 2012中)



基本上,我正在更新一个旧的web应用程序,使其兼容多浏览器。到处都是原始程序员使用过的地方-

document.all.element

据我所知,".all"只是IE,在IE 4中引入。IE 5中引入了符合标准的".getElementById"函数。我想将上述声明的实例更改为-

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

最新更新