【问题标题】:What is pattern regex to remove a attribute but not the same value?什么是模式正则表达式来删除属性但值不同?
【发布时间】:2020-06-22 09:59:56
【问题描述】:

这是我的文字:

<Row ss:Height="16.8" ss:Width="100" > </Row><Row ss:Height="15"> </Row>

我要删除所有文字:ss:Height="?"

结果:&lt;Row ss:Width="100" &gt; &lt;/Row&gt;&lt;Row &gt; &lt;/Row&gt;

我尝试了这种模式'ss:Height=".*"',但它不能:

var strXMLString = '<Row ss:Height="16.8" ss:Width="100" > </Row><Row ss:Height="15"> </Row>';
var strPattern = 'ss:Height=".*"';
reg = new RegExp(strPattern, "g");
strXMLString = strXMLString.replace(reg, "");
alert(strXMLString);

【问题讨论】:

    标签: javascript html regex


    【解决方案1】:

    试试这个:

    const regex = /ss:Height="\d+\.?\d*"/gm;
    const str = `<Row ss:Height="16.8" ss:Width="100" > </Row><Row ss:Height="15"> </Row>`;
    strXMLString = str.replace(regex, "");
    alert(strXMLString);

    【讨论】:

    • 嗯,为什么?你能给我一个反例吗?我假设你的属性只有数值
    • 我的问题中的一个示例。
    • hmmm,请尝试运行 sn-p,它似乎可以满足您的需求。
    【解决方案2】:

    你已经接近了,你需要在第一次出现时停止使用(.*?),所以正则表达式看起来像这样:

    ss:Height="(.*?)"
    

    https://regex101.com/r/wu7Eyq/1/

    var strXMLString = ' <Row ss:Height="16.8" ss:Width="100" > </Row><Row ss:Height="15"> </Row>';
    var strPattern = 'ss:Height="(.*?)"';
    reg = new RegExp(strPattern, "g");
    strXMLString = strXMLString.replace(reg, "");
    alert(strXMLString);

    【讨论】:

    • 好吧,实际上你的解决方案比我的更优雅;)
    • @lbrutti 我还是给你 +1 了 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    • 2015-07-21
    相关资源
    最近更新 更多