javascript - 将所有使用单引号的 html 属性定义替换为双引号

标签 javascript jquery dom

我有一个 html 字符串,我想用双引号替换用单引号设置的 html 属性的任何实例。

例如,我想替换

<script src='foo.js'></script>

<script src="foo.js"></script>

但是,我希望在不影响 javascript 语句或 html 文本中可能存在的任何单引号的情况下执行此操作。

例如

<script> var foo = '67'; </script> 

应该不受影响并且

<div id='foo'> 'hi' </div>

应该变成

<div id="foo"> 'hi' </div>

有什么简单的方法可以做到这一点吗?

对于给定的元素,使用jquery选择它,然后读取它的outerHTML可以做到这一点,但我想一次性对整个html页面执行此操作。

谢谢!

最佳答案

试试这个:

var str = "<br style   = 'width:100px'/>   test link<a href=\"http://www\"></a>";
var regex = /<\w+\s*(\w+\s*=\s*(['][^']*['])|(["][^"]*["]))*\s*[\/]?>/g;
var rstr = str.replace(regex, function($0,$1,$2){
    return $0.replace($2, $2.replace(/'/g, '"'));
});
console.log('replaced string = ' + rstr);

您可以重新调整它以严格匹配您的情况。

关于javascript - 将所有使用单引号的 html 属性定义替换为双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13372908/

相关文章:

javascript - 使用 JQuery 隐藏和显示多个 div 以及隐藏标题

javascript - 如何使javascript在悬停和单击期间忽略透明图像区域

jquery - 将 jquery var 数据推送到 javascript 警报

javascript - 如何附加一行 JavaScript(而不是外部 .js 文件)?

java - 将 XML 文件解析为 DOM 时出错

javascript - 在没有 "px"的情况下获取按钮 Javascript 的宽度

javascript - 遍历在 VueJS 中不起作用的对象数组

javascript - 如何确定调用脚本元素?

javascript - 构建元素时重写sass url

JavaScript 函数未定义?