[英]JavaScript String Replace with a tricky regular expression
我正在尝试找出要更改此字符串的正则表达式
html = '<img style="width: 311px; height: 376px;" alt="test" src="/img/1268749322.jpg" />';
对此
html = '<img width="311" height="376" alt="test" src="/img/1268749322.jpg" />';
借助Javascript.replace。
这是我的开始:
html = html.replace(/ style="width:\?([0-9])px*"/g, "width=\"$1\"");
谁能帮我?
谢谢
为什么不通过JavaScript编辑DOM?
我不是CSS方面的专家,但是使用样式不是比width / height属性更好的主意吗?
您在:
( \\s*
)之后忘记了空格。 你不要吗 因为它将错过> 1个空格或一个制表符
html = '<img style="width: 311px; height: 376px;" alt="test" src="/img/1268749322.jpg" />';
var d = document.createElement("div");
d.innerHTML = html;
var img = d.firstChild;
var width = parseInt(img.style.width, 10);
var height = parseInt(img.style.height, 10);
img.setAttribute("width", width);
img.setAttribute("height", height);
img.removeAttribute("style");
alert(d.innerHTML);
当然,如果您不以字符串;-)开头,事情会稍微容易一些
Gumbo是正确的,您应该使用DOM。
但是对于您的正则表达式:什么是\\?
(问号)应该是什么意思? 我将在该位置插入\\s*
(任意数量的空格)。
如果您愿意,我可以更详细地说明一下,让我知道它是如何工作的:
html = html.replace(/style=".*?width:\s?(\d+).*?height:\s?(\d+).*?"/g, "width=\"$1\" height=\"$2\"");
编辑:逃脱QQ
是的,通常我会使用DOM,但是在这种特殊情况下,我需要解析WYSIWYG-Editor提供的HTML代码,该代码带有过滤器样式属性。 通常,这很好,但是对于图片,我想使用此html.replace-Hack保持设置的大小。
这是答案:
html = html.replace(/ style=".*?width:\s?(\d+).*?height:\s?(\d+).*?"/g, " width=\"$1\" height=\"$2\"");
谢谢你的帮助 :-)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.