我试图编写一个常规表达式来捕获具有特定类的HTML表(以及所有表数据)。
例如,该表有一个recapLinks类,它由许多表行和表数据组成,然后以。见下文:
<table width="100%" class="recapLinks" cellspacing="0">
[numerous table rows and data in the table.]
</td></tr></tbody></table>
我正在使用javascript。
答案 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>