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
如何更改正则表达式?
答案 0 :(得分:1)
你可以试试这个:
var pat = /t=(?:(\d+)m)?(\d+)s/;
这允许第一部分,包括m
是可选的。现在在第二种情况下,$1
应为空字符串。
(?:
确保您没有获得包含m
的其他捕获字符串。
这也可以,并且几乎一样:
var pat = /t=(\d*?)m?(\d+)s/;
这里我们只允许第一个数字字符串为空,m
为可选数字。只需确保在?
后*
使用1
不重复 - 否则m
将与第一次重复匹配,3
将被排除,并且{{1}}将与第二次重复匹配。