【问题标题】:Replace space between html tags only仅替换 html 标签之间的空格
【发布时间】:2015-02-17 00:24:41
【问题描述】:

我有一个类似

的字符串
var x = "<html><head>  <title>Hello!</title> </head> <body> <div class=”div1”> "+
"<h1>This is a headline!</h1> "+
"<br><img src=”header-image.png”>  </div>  "+
"<div class=”div2”>  <a href=”http://www.google.com”> </a>  </div>"+
"<div class='div3'></div>  </body>  </html>";

输出应该是

x = "<html><head><title>Hello!</title></head><body><div class=”div1”>"+
"<h1>This is a headline!</h1>"+
"<br><img src=”header-image.png”></div>"+
"<div class=”div2”><a href=”http://www.google.com”></a></div>"+
"<div class='div3'></div></body></html>";

在输出中,我不应该只在 > 和

如果元素和属性之间有任何空格,它应该是完整的。 如果我有以下文字

input : <a href='www.google.com'> Click Here </a>  <br/><span>  </span>

输出应该是

<a href='www.google.com'> Click Here </a><br/><span></span>

表示只有结束标签和开始标签之间的空格可以替换为空字符串“”。

我试过了

x = x.replace(/>( )</g,"")

输出是

"<html><head>  <title>Hello!</title/headbodydiv class=”div1”h1>This is a headline!</h1><br><img src=”header-image.png”>  </div><div class=”div2”>    <a href=”http://www.google.com”></a></div><div class='div3'></div>  </body>  </html>"

标签之间仍有一些空格。 有人可以帮我吗?

【问题讨论】:

    标签: regex html replace


    【解决方案1】:

    只需应用此正则表达式并替换为empty string

    (?<=>)\s*
    

    查看演示。

    https://www.regex101.com/r/rK5lU1/35

    编辑:

    似乎不支持lookbehin不支持。使用

    >\s*
    

    并替换为&gt;

    【讨论】:

    • 它不工作。抛出错误Uncaught SyntaxError: Invalid regular expression: /(?&lt;=&gt;)\s*/: Invalid group
    • 知道了,但我需要用&gt;替换它
    【解决方案2】:

    或者使用这个模式

    (?<=>) +(?=<)
    

    Demo

    【讨论】:

    • 抛出错误Uncaught SyntaxError: Invalid regular expression: /(?&lt;=&gt;) +(?=&lt;)/: Invalid group
    【解决方案3】:

    下面的正则表达式会将&gt;&lt;符号(包括)之间存在的所有空格替换为&gt;&lt;

    x.replace(/>\s+</g, "><")
    

    x.replace(/>[ \t]+</g, "><")
    

    使用trim() 函数删除所有前导和尾随空格。

    > s.replace(/>\s+</g, "><").trim()
    '<a href=\'www.google.com\'> Click Here </a><br/><span></span>'
    

    示例:

    > var s = "<a href='www.google.com'> Click Here </a>  <br/><span>  </span>"
    undefined
    > s.replace(/>\s+</g, "><")
    '<a href=\'www.google.com\'> Click Here </a><br/><span></span>'
    

    【讨论】:

    • 如果像&lt;a href=''&gt; click here&lt;/a&gt;这样的链接之间有一些文本,那么所有这些情况下的输出都是&lt;a&gt;clickhere&lt;/a&gt;。但我想要的是&lt;a&gt; click here&lt;/a&gt;
    猜你喜欢
    • 2015-04-11
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 2012-01-17
    • 1970-01-01
    • 2014-11-13
    • 2016-07-05
    相关资源
    最近更新 更多