匹配..与多个新行

时间:2017-07-23 17:50:53

标签: javascript regex

我对JS中的正则表达式有所了解,但我无法想出与我所拥有的文本中的新行类型相匹配。

上下文是get()调用,并且只想保留结果的一部分:

$.get( "...", { id: "3", name: name } )
     .done(function( data ) {
          body.append(data.match(/<tr\s+class="hl"\s+>.*<\/tr>/) );
});

所以我只想保留

<tr class="hl" >

        <td class="ras  fc" >3</td>
        <td class="plsa " ><a href="">M</a> </td>
        <td class="lefv " >3</td>
        <td class="xpm  lc" >3</td>
</tr>

从整个代码:Regex ex

3 个答案:

答案 0 :(得分:1)

你也可以试试这个正则表达式:

entries

这个备忘单对你的下一个正则表达式的努力非常有帮助: http://www.rexegg.com/regex-quickstart.html

答案 1 :(得分:0)

它不是一个特别优雅的解决方案,但是如果您创建了一个元素并将其附加到DOM,那么选择您想要的节点会相对容易,例如;

&#13;
&#13;
var str = '<table id="hhh" class="row_table_data"><thead><tr><td></td><td>J</td><td>N</td><td>E</td></tr></thead><tbody><tr class="hover"><td class="ras " >2</td><td class="plsa " ><a href="">X</a> </td><td class="lefv " >3</td><td class="xpm lc" >1</td></tr><tr class="hl" ><td class="ras  fc" >3</td><td class="plsa " ><a href="">M</a> </td><td class="lefv " >3</td><td class="xpm  lc" >3</td></tr><tr class="hover"><td class="ras " >4</td><td class="plsa " ><a href="">l</a> </td><td class="lefv " >3</td><td class="xpm " >3</td></tr>';

var el = document.createElement( 'div' );
el.style = "display:none;"
el.innerHTML = str;
document.body.appendChild( el );
var tr = document.querySelector( 'tr.hl' );
console.log( tr.outerHTML );
&#13;
&#13;
&#13;

无论如何,我确定你会得到一个更好的解决方案,但只是发布这个替代/比较。

答案 2 :(得分:0)

正如Tom Lord在评论中所建议的那样,使用JS来解析文档比在html上使用regex更有效,万一它会改变而对于其他问题,实际上它只需要使用一个jquery对象:

let tr =  $(data).find('.hl');

然后你可以像任何其他jquery元素一样使用:

 tr.find("td:first").remove();                         //remove column
 tr.find("td:last").after("<td>"+(...)+"</td>");       //  add   column