用JavaScript中的正则表达式替换HTML属性值

时间:2014-04-28 07:24:14

标签: javascript html regex onclick

我想用单引号替换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在客户端进行清理。我目前唯一能想到的方法是我需要使用Regex onclick 双引号属性替换为单引号属性,并且只有当函数用于< strong> onclick 属性。

我尝试过类似:jsFiddle

的内容

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

感谢。

2 个答案:

答案 0 :(得分:1)

如果你无法改变他人,那就改变自己吧。 所以我们走了:

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

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

答案 1 :(得分:0)

如果您仍在寻找正则表达式,可以使用此示例。它将为您提供链接<a onclick="Track('http://www.example.com')">Track Me</a>

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用于演示;

我没有看到,您要查找版本<a onclick='Track("http://www.example.com")'>Track Me</a>,因此您可以使用此行更改上述代码

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