正则表达式匹配表行的表有多行

时间:2014-02-12 17:03:12

标签: javascript regex

我有这段代码:

<table>
    <tr class="odd">
        <td>&nbsp; 1</td>
        <td>&nbsp; 1</td>
        <td>&nbsp; 1</td>
    </tr>
    <tr>
        <td>&nbsp; 2</td>
        <td>&nbsp; 2</td>
        <td>&nbsp; 2</td>
    </tr>
    <tr class="odd">
        <td>&nbsp; 3</td>
        <td>&nbsp; 3</td>
        <td>&nbsp; 3</td>
    </tr>
    <tr>
        <td>&nbsp; 4</td>
        <td>&nbsp; 4</td>
        <td>&nbsp; 4</td>
    </tr>
</table>

我正在尝试使用正则表达式

获取每个表行内的内容

我的模式:<tr(?: class="odd")>[^]+</tr>

但它只匹配上一个tr标记。

2 个答案:

答案 0 :(得分:2)

正则表达式通常都是贪婪的,因此它会在进入正则表达式的</tr>部分之前尽可能匹配。你可以通过添加?来不情愿地匹配,例如:

<tr(?: class="odd")>[^]+?</tr>

那就是说,我绝对同意其他人的看法,jQuery(以及其他工具)几乎肯定是更好的解决方案。

答案 1 :(得分:0)

选项是使用jQuery而不是正则表达式吗?

$('table > tr').each(function() {
  var trInnerHtml = $(this).html();
  alert(trInnerHtml);
});