Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript字符串替换为复杂的正则表达式_Javascript_Regex_String - Fatal编程技术网

JavaScript字符串替换为复杂的正则表达式

JavaScript字符串替换为复杂的正则表达式,javascript,regex,string,Javascript,Regex,String,我正试图找出需要什么正则表达式来更改这个字符串 html = '<img style="width: 311px; height: 376px;" alt="test" src="/img/1268749322.jpg" />'; 有人能帮我吗 谢谢秋葵是对的,你应该使用DOM 但是对于你的正则表达式:\?(问号)应该是什么意思?我将在该位置插入\s*(任意数量的空格) 秋葵是对的,你应该使用DOM 但是对于你的正则表达式:\?(问号)应该是什么意思?我将在该位置插入\s*(任意数

我正试图找出需要什么正则表达式来更改这个字符串

html = '<img style="width: 311px; height: 376px;" alt="test" src="/img/1268749322.jpg" />';
有人能帮我吗


谢谢

秋葵是对的,你应该使用DOM


但是对于你的正则表达式:
\?
(问号)应该是什么意思?我将在该位置插入
\s*
(任意数量的空格)

秋葵是对的,你应该使用DOM

但是对于你的正则表达式:
\?
(问号)应该是什么意思?我将在该位置插入
\s*
(任意数量的空格)

  • 是的

    为什么不从JavaScript编辑DOM

  • 我不是CSS方面的专家,但是使用样式不是比宽度/高度属性更好吗

  • 您忘记了
    \s*
    )后面的空格。你不想要吗?因为它将丢失>1个空间或一个选项卡

  • 是的

    为什么不从JavaScript编辑DOM

  • 我不是CSS方面的专家,但是使用样式不是比宽度/高度属性更好吗

  • 您忘记了
    \s*
    )后面的空格。你不想要吗?因为它将丢失>1个空间或一个选项卡


  • 如果您愿意,我可以更详细地说明,让我知道这是如何工作的:

    html = html.replace(/style=".*?width:\s?(\d+).*?height:\s?(\d+).*?"/g, "width=\"$1\" height=\"$2\"");
    

    编辑:转义qq

    如果您愿意,我可以让它更详细,让我知道它是如何工作的:

    html = html.replace(/style=".*?width:\s?(\d+).*?height:\s?(\d+).*?"/g, "width=\"$1\" height=\"$2\"");
    

    编辑:转义qq

    是的,通常我会使用DOM,但在这种特殊情况下,我需要解析WYSIWYG编辑器中过滤样式属性的HTML代码。一般来说,这是好的,但是对于图片,我想用这个html.replace-Hack保持设置的大小

    答案是:

    html = html.replace(/ style=".*?width:\s?(\d+).*?height:\s?(\d+).*?"/g, " width=\"$1\" height=\"$2\"");
    

    感谢您的帮助:-)

    是的,通常我会用DOM来处理,但在这种特殊情况下,我需要解析所见即所得编辑器中过滤样式属性的HTML代码。一般来说,这是好的,但是对于图片,我想用这个html.replace-Hack保持设置的大小

    答案是:

    html = html.replace(/ style=".*?width:\s?(\d+).*?height:\s?(\d+).*?"/g, " width=\"$1\" height=\"$2\"");
    
    感谢您的帮助:-)

    html='';
    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(“宽度”,宽度);
    img.setAttribute(“高度”,高度);
    移除属性(“样式”);
    警报(d.html);
    
    当然,如果不从字符串开始,事情会变得稍微容易一些;-)

    html=”;
    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(“宽度”,宽度);
    img.setAttribute(“高度”,高度);
    移除属性(“样式”);
    警报(d.html);
    

    当然,如果不从字符串开始,事情会变得稍微容易一些;-)

    如果可能的话,试着在DOM上进行。正则表达式不适合处理HTML。是否尝试操作特定的标记?或者您正在尝试操作所有相同类型的标记吗?如果可能的话,尝试在DOM上进行操作。正则表达式不适合处理HTML。是否尝试操作特定的标记?或者你想操纵所有相同类型的标签?就是这样,谢谢!html=html.replace(/style=“.*”宽度:\s(\d+).*?高度:\s(\d+).*?/g,“宽度=\”$1\“高度=\”$2\”);谢谢Juri,glade你喜欢它!就是这个,谢谢!html=html.replace(/style=“.*”宽度:\s(\d+).*?高度:\s(\d+).*?/g,“宽度=\”$1\“高度=\”$2\”);谢谢Juri,glade你喜欢它@Juri-万一不明显,链接是指向StackOverflow两位创始人之一的博客。@Juri-万一不明显,链接是指向StackOverflow两位创始人之一的博客。这是所见即所得编辑器提供的HTML代码所见即所得编辑器提供的HTML代码
    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);