在Sublime文本中使用RegEx进行高级查找和替换

时间:2013-12-03 14:17:45

标签: regex asp-classic replace sublimetext2

我的目录中包含经典ASP 遗留代码,几乎所有文件都有类似的内容:

<input type="hidden" name="driverPayment" value="<% =driverPayment %>">

然后在代码中,一些JavaScript正在运行,并执行以下操作:

var x = document.getElementById('driverPayment')

这在IE中运行良好,但当然在其他任何地方都无效,因为没有定义ID属性。

修复是通过1770文件并手动添加与输入上的name属性匹配的ID属性。所以就这样:

<input type="hidden" name="driverPayment" id="driverPayment" value="<% =driverPayment %>">

有没有办法可以使用以下逻辑自动执行此过程:

  1. 获取具有名称属性
  2. 的input元素
  3. 如果输入具有id属性,请转到下一个输入
  4. 否则为输入添加ID属性,并为其命名,使其与name属性
  5. 的值相匹配

    我想为我拥有的1770 Classic ASP文件执行此操作。我正在使用Sublime Text。

    我非常感谢任何帮助。感谢

1 个答案:

答案 0 :(得分:2)

您可以使用正则表达式进行匹配。我的正则表达式并不好,但以下应该有效。很高兴其他人改进它。我使用了this question中的一些正则表达式。

右键单击项目文件夹

选择“在文件夹中查找”选项

查找和替换选项显示在屏幕底部。选择正则表达式选项(最左侧)。

regex-find-and-replace

输入

<(?:input)\s+(?=[^>]*\bname\s*=)(?![^>]*\bid\s*=)[^>]*>?(name="driverPayment")
<查找字段

中的

输入

id="driverPayment" name="driverPayment" 
<替换字段

中的

点击替换