0
        if ((urlStr.indexOf('t='))!=-1)
        {
            var pat = /t=(\d+)m(\d+)s/;
            pat.exec(urlStr);
            alert (RegExp.$1);
            alert (RegExp.$2);

        }

案例 1:http://localhost/proc1/commit.php&t=1m13s 返回 1 和 13 -> 好的

案例 2:http://localhost/proc1/commit.php&t=13s 返回空白和空白 -> 不好
预期结果 0 和 13

我该如何更改我的正则表达式?

4

1 回答 1

1

你可以试试这个:

var pat = /t=(?:(\d+)m)?(\d+)s/;

这允许第一部分,包括m是可选的。现在在你的第二种情况下,$1应该是一个空字符串。

(?:确保您不会获得另一个m包含.

这也将起作用,并且几乎相同:

var pat = /t=(\d*?)m?(\d+)s/;

在这里,我们只允许第一个数字字符串为空,并且m是可选的。只需确保在?之后使用*使重复不贪婪 - 否则1第一次重复将匹配,m将被忽略,3第二次重复将匹配 。

于 2012-10-19T08:01:28.437 回答