我对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
答案 0 :(得分:1)
答案 1 :(得分:0)
它不是一个特别优雅的解决方案,但是如果您创建了一个元素并将其附加到DOM,那么选择您想要的节点会相对容易,例如;
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;
无论如何,我确定你会得到一个更好的解决方案,但只是发布这个替代/比较。
答案 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