【发布时间】:2017-07-23 17:50:53
【问题描述】:
我对 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
【问题讨论】:
-
除非你有充分的理由在正则表达式中这样做,否则不要使用正则表达式。使用解析器。
-
@TomLord 我不习惯解析器,你能解释一下吗?
-
使用纯 JS,您可以通过创建一个虚拟元素并操作 DOM 来实现这一点。例如,如果您使用 jQuery,那么您也可以使用一些 shortcuts。下面已经为您提供了一种粗略的方法;我建议你做一些研究。一般来说,you cannot parse HTML with regex - 所以你应该瞄准使用解析器来处理像这样的“不平凡”的事情。
-
哦,我尝试在网上和其他方式上“创建对象 jquery”,但我无法找到
$(data),正如您在帖子中解释的那样,谢谢,但同时正则表达式完美地帮助了我 -
如果您有嵌套表,或注释掉 HTML,或
<tr>标签中的额外空格,或额外标签属性等,则正则表达式答案将无法正常工作......如果它可以作为您的用例的“快速修复”,那么就足够公平了,但请注意,这不是“正确”的解决方案。您的代码将包含潜在的错误,因为无法使用正则表达式完全解析 HTML。
标签: javascript regex