javascript - 如何用js替换html中特定属性中的括号?

标签 javascript jquery html regex

我有这个 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>

我想将 {{CODE}} 更改为 %%CODE%%,将 {{CLICK}} 更改为 %%CLICK%%,将 {{OPEN}} 更改为 %%OPEN%%,但仅限于属性所有 div 中的 data-href。

我不知道如何只定位 data-href。 我尝试将此定位到 data-href 属性中的括号:

/data-href="([^"]+)({{([^\"]*)}}+)([^"]+)"/g

但它不起作用!

感谢您的帮助。

最佳答案

您可以使用一个简单的正则表达式来匹配 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)

关于javascript - 如何用js替换html中特定属性中的括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46996061/

相关文章:

javascript - 如何使用 JQuery 一次更新数组变量上的多个复选框值

javascript - 如何导出 Codepen 以在网站的 HTML 中使用

javascript - 如何使文本在页面加载时向右滑动?

javascript - 使用 AJAX 在 PHP 中设置 session 变量

javascript - 使用 ReactJS 在 ES6 类中嵌套 "this"绑定(bind)

javascript - 按右箭头键时光标消失

html - 垂直对齐 twitter bootstrap 缩略图?

javascript - 使用 angularJS 填充输入和文本区域

javascript - 在 for 循环中使用 Promise 请求与顺序相关的信息

math - Javascript:计量单位转换库?