如果我们使用 jQuery,只需标记 TR 并删除它等等,这是一件小事。但我很好奇如何以严格的正则表达式方式做到这一点......从而操纵 dom。
我有这个:
<tr id="anyName">
<td>
// a bunch of html
</td>
</tr>
如何使用正则表达式将 tr 及其中的所有内容替换为“”。
我有这个:
sometable.replace(".*?","");
我尝试了其他一些方法,但无法使其正常工作。基本上,我希望 tr 及其所有内容消失。我正在使用服务器端模板引擎,它在进入 View 之前处理所有这些数据。因此,我可以将此数据作为字符串保存到此模板逻辑中......然后将其删除......但由于它是字符串,我需要正则表达式来删除它。
有什么想法吗?我觉得我在这里缺少一些非常简单的东西。
最佳答案
问题是<tr>
可以嵌套 <tr>
里面有标签..
在某些情况下 <tr>
标签没有有结束标签(XHTML 除外)
因此,即使您在正则表达式中使用奇数模式,正则表达式也无法删除此类标签
因此,请不要为此使用正则表达式
<小时/>由于您使用的是 jquery,因此您可以使用 remove
$('tr').remove();
或者你可以使用其他服务器端 html 解析器..但不要使用正则表达式..它可能会破坏你的网站
<小时/>要回答您的问题,您可以使用此正则表达式
(?s)<tr[^<>]*>(.(?!<tr[^<>]*>))*?</tr>
或在 JavaScript 中
/<tr[^<>]*>(.(?!<tr[^<>]*>))*?<\/tr>/s
但是等等,你需要不断地替换它,直到它替换掉所有的内容
所以,你需要使用for循环并循环直到它替换所有..
但是如果没有结束标记,这个正则表达式可能会崩溃
关于javascript - 正则表达式。删除 <tr> 及其所有内容,直到 tr 标签结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17416649/