我正在尝试找出我需要更改此字符串的正则表达式
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\"");
任何人都可以帮助我吗?
感谢
答案 0 :(得分:2)
这是generally considered a Bad Thing to do HTML parsing with RegExs。
为什么不从JavaScript编辑DOM?
我不是CSS专家,但是使用样式比宽度/高度属性更好吗?
您在:
(\s*
)之后忘记了空格。你不想要?因为它将错过&gt; 1个空格或标签
答案 1 :(得分: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);
当然,如果你不以字符串开头,事情就会变得容易一些; - )
答案 2 :(得分:0)
Gumbo是对的,你应该使用DOM。
但是你的正则表达式:\?
(问号)应该是什么意思?我会在那个位置插入\s*
(任意数量的空格)。
答案 3 :(得分:0)
如果你愿意,我可以更详细说明,让我知道这是如何工作的:
html = html.replace(/style=".*?width:\s?(\d+).*?height:\s?(\d+).*?"/g, "width=\"$1\" height=\"$2\"");
编辑:转发qq
答案 4 :(得分:0)
是的,通常我会用DOM来做,但在这种特殊情况下,我需要解析从WYSIWYG-Editor威尔过滤器样式属性给出的HTML代码。一般来说这很好,但对于图片我想用这个html.replace-Hack保持设置的大小。
这就是答案:
html = html.replace(/ style=".*?width:\s?(\d+).*?height:\s?(\d+).*?"/g, " width=\"$1\" height=\"$2\"");
感谢您的帮助: - )