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 -> Okay
案例2:http://localhost/proc1/commit.php&t=13s返回空白且空白-> Not okay
预期结果0和13
如何更改我的正则表达式?
发布于 2012-10-19 16:01:28
你可以试试这个:
var pat = /t=(?:(\d+)m)?(\d+)s/;这允许第一部分是可选的,包括m。现在,在第二种情况下,$1应该是一个空字符串。
(?:确保您不会获得另一个包含m的捕获字符串。
这也会起作用,而且效果大致相同:
var pat = /t=(\d*?)m?(\d+)s/;在这里,我们只允许第一个数字字符串为空,m为可选。只需确保在*之后使用?使重复变得不贪婪-否则第一次重复将匹配1,m将被省略,第二次重复将匹配3。
https://stackoverflow.com/questions/12969816
复制相似问题