使用正则表达式查找文档中最后一次出现的字符串

时间:2015-04-02 13:17:37

标签: html regex xml html-table

我尝试使用 / session = s(。+?)"> / g 来搜索此xml文档中的字符串:

<html><body><p><table border="1">
        <tr>
        <td><a href="viewSessionLog.jsp?session=s0001">s0001</a></td>
        </tr>
        <tr>
        <td><a href="viewSessionLog.jsp?session=s0002">s0002</a></td>
        </tr>
        <tr>
        <td><a href="viewSessionLog.jsp?session=s0003">s0003</a></td>
        </tr>
        <tr>
        <td><a href="viewSessionLog.jsp?session=s0004">s0004</a></td>
        </tr>
                    </table>
                </p>
            </body>
        </html>

我得到了:

`0001`
`0002`
`0003`
`0004`

但我只想要&#39; 0004&#39;

如何才能使用正则表达式?

1 个答案:

答案 0 :(得分:0)

    var lastMatch = '',
        str = document.documentElement.innerHTML,
        regex = /session=s(.+?)">/g,
        captured;

    while (captured = regex.exec(str))
        lastMatch = captured[1];

这是一个小提琴:http://jsfiddle.net/f4n319d3/

如果由于某种原因你不想循环exec函数,我认为唯一的另一个选择是使用replace函数并在其中分配lastMatch以便你将留下最后一场比赛:

    var lastMatch = '',
        str = document.documentElement.innerHTML,
        regex = /session=s(.+?)">/g;

    str.replace(regex, function(str, match) {
        lastMatch = match;
    });

在这两种情况下,lastMatch都会为您提供最后一个匹配的捕获组。