【问题标题】:Replace HTML attribute value with regular expression in JavaScript用 JavaScript 中的正则表达式替换 HTML 属性值
【发布时间】:2014-04-28 07:24:14
【问题描述】:

我想用单引号替换 HTML 属性双引号。例如:

如果输入是:

<a onclick="Track("http://www.example.com")">Track Me</a>

输出将是:

<a onclick='Track("http://www.example.com")'>Track Me</a>

这里需要将onclick="Track("http://www.example.com")" 替换为onclick='Track("http://www.example.com")',即这里唯一的更改是将onclick="..." 替换为onclick='...'

在我的例子中,内容是从 HTML 编辑器中检索的,其内容需要在客户端使用 JavaScript 进行清理。我目前能想到的唯一方法是我需要使用Regexonclick 双引号属性替换为单引号属性,并且只有在 中使用“跟踪”功能时才会发生这种情况onclick 属性。

我尝试过类似:jsFiddle

我正在寻找任何解决方案。非常感谢任何帮助。

谢谢。

【问题讨论】:

  • 肯定没有办法修改编辑器来正确存储吗?
  • HTML 只是错误。使用您喜欢的任何编辑器更改源代码。
  • 您需要使用 RegEx 来解析 HTML 的事实意味着您做错了。
  • 我认为你应该替换你的逻辑。
  • @setec 我不认为这算作用正则表达式解析 HTML - OP 不想提取任何数据,只是在语法上更正它。

标签: javascript html regex onclick


【解决方案1】:

如果你不能改变别人,那就改变自己。 所以我们开始吧:

var str = '<a onclick="Track("http://www.example.com")">Track Me</a>';

console.log(str.replace(/onclick="Track\("([^"]+)"\)"/, 'onclick=\'Track("$1")\''));

【讨论】:

  • 谢谢。正则表达式对我有用。我刚刚修改为:/onclick="Track\("([\s\S]+)"\)"/
【解决方案2】:

如果你还在寻找正则表达式,你可以使用这个例子。它会给你那个链接&lt;a onclick="Track('http://www.example.com')"&gt;Track Me&lt;/a&gt;

var s = '<a href="#" target="_blank" 
         onclick="Track("http://www.example.com/")">Test Link</a>';

var p = s.replace(/(onclick=")(.*)(\")/,function(match,prefix,handler,suffix){
    return prefix + handler.replace(/"/g,'\'') + suffix;
});

console.log(p);

还有fiddle 用于演示;

我没有看到,你在寻找版本&lt;a onclick='Track("http://www.example.com")'&gt;Track Me&lt;/a&gt;,所以你可以用这一行更改上面的代码

var p = s.replace(/(onclick=")(.*)(\")/,function(match,prefix,handler,suffix){
    return prefix.replace(/"/,'\'') + handler + suffix.replace(/"/,'\'');
});

【讨论】:

    猜你喜欢
    • 2012-05-26
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 2017-07-15
    • 2016-04-04
    • 1970-01-01
    相关资源
    最近更新 更多