我如何编写一个捕获具有特定类的HTML表的正则表达式?

时间:2015-02-21 04:29:40

标签: javascript regex

我试图编写一个常规表达式来捕获具有特定类的HTML表(以及所有表数据)。

例如,该表有一个recapLinks类,它由许多表行和表数据组成,然后以。见下文:

<table width="100%" class="recapLinks" cellspacing="0">

[numerous table rows and data in the table.]

</td></tr></tbody></table>

我正在使用javascript。

1 个答案:

答案 0 :(得分:1)

如果可以保证从不嵌套表,那么捕获它的正则表达式非常简单。嵌套的表格变得更加棘手。

/<table[^>]*class=("|')?.*?\bCLASSNAMEHERE\b.*?\1[^>]*>([\s\S]*?)</table>/im

例如,如果一个类之前的属性中有一个结束>,这是不可能的,但可能的话,正则表达式将会落在它的脸上。复杂的愤怒可以尝试为此做好准备,但实际上并不值得努力。

但是,如果这些元素在DOM中,jQuery本身可以使这变得轻而易举。正则表达式可以很容易被愚弄或绊倒,故意或偶然,但这就是为什么我们有解析器。 JQuery并不关心元素中嵌套或不嵌套的内容。它并不关心引用风格,多行,任何一种。

$(document).ready(function () {
  console.log($("table.myClassHere").prop("outerHTML"))
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<table class="myClassHere">
  <tr>
    <td>Book Series</td>
  </tr>
  <tr>
    <td>Pern</td>
  </tr>
  <tr>
    <td>Hobbit</td>
  </tr>
</table>

<table class="otherClassHere">
  <tr>
    <td>Movies</td>
  </tr>
  <tr>
    <td>Avengers</td>
  </tr>
  <tr>
    <td>Matrix</td>
  </tr>
</table>