我有一个充满经典 ASP 遗留代码的目录,几乎所有文件都有与此类似的内容:
<input type="hidden" name="driverPayment" value="<% =driverPayment %>">
然后在代码中,一些 JavaScript 正在运行,并执行以下操作:
var x = document.getElementById('driverPayment')
这在 IE 中工作得很好,但当然在其他地方不起作用,因为没有定义 ID 属性。
修复方法是检查 1770 个文件并手动添加与输入上的名称属性匹配的 ID 属性。所以就这样吧:
<input type="hidden" name="driverPayment" id="driverPayment" value="<% =driverPayment %>">
有没有一种方法可以通过使用以下逻辑来自动化此过程:
- 获取带有 name 属性的输入元素
- 如果输入具有 id 属性,则移至下一个输入
- 否则,向输入添加一个 ID 属性,并为其指定一个与 name 属性值匹配的名称
我想对我拥有的 1770 Classic ASP 文件执行此操作。我正在使用 Sublime Text。
最佳答案
可以使用正则表达式来匹配。我的正则表达式不是很好,但以下应该可以工作。为其他人改进而感到高兴。我使用了 this question 中的一些正则表达式.
右键单击项目文件夹
选择“在文件夹中查找”选项
查找和替换选项出现在屏幕底部。选择正则表达式选项(最左侧)。
输入
<(?:input)\s+(?=[^>]*\bname\s*=)(?![^>]*\bid\s*=)[^>]*>?(name="driverPayment")
在查找字段
输入
id="driverPayment" name="driverPayment"
在替换字段中
点击替换
关于regex - Sublime Text 中使用 RegEx 进行高级查找和替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20353580/