繁体   English   中英

JavaScript字符串替换为棘手的正则表达式

[英]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\"");

谁能帮我?

谢谢

  1. 用RegExs进行HTML解析通常被认为是一件坏事

    为什么不通过JavaScript编辑DOM?

  2. 我不是CSS方面的专家,但是使用样式不是比width / height属性更好的主意吗?

  3. 您在:\\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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM