我有这个HTML代码:
<div>
<a href="TOTO/{{CODE}}/TOTO/{{CLICK}}/{{OPEN}}" data-href="TOTO/{{CODE}}/TOTO/{{CLICK}}/{{OPEN}}">FOO1</a>
</div>
<div>
<a href="{{CODE}}/{{CLICK}}/BAR" data-href="{{CODE}}/{{CLICK}}/BAR">FOO2</a>
</div>
我想通过%% OPEN %%将{{CODE}}更改为%% CODE %%和{{CLICK}}更改为%% CLICK %%和{{OPEN}},但仅限于属性所有div中的data-href。
我不知道如何只定位data-href。 我试着在data-href属性中定位括号:
/data-href="([^"]+)({{([^\"]*)}}+)([^"]+)"/g
但它不起作用!
感谢您的帮助。
答案 0 :(得分:1)
您可以使用简单的正则表达式匹配data-href
内的任何内容。一个简单的正则表达式可以是这样的
data-href=".*?"
然后,您可以用一个循环替换所有匹配
var str = '<div><a href="TOTO/{{CODE}}/TOTO/{{CLICK}}/{{OPEN}}" data-href="TOTO/{{CODE}}/TOTO/{{CLICK}}/{{OPEN}}">FOO1</a></div><div><a href="{{CODE}}/{{CLICK}}/BAR" data-href="{{CODE}}/{{CLICK}}/BAR">FOO2</a></div>';
var myRegexp = /data-href=".*?"/g;
var match = myRegexp.exec(str);
while (match != null) {
str = str.replace(match[0], match[0].replace(/{{|}}/g, '%%'));
match = myRegexp.exec(str);
}
console.log(str)