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 を返す -> OK

ケース 2:http://localhost/proc1/commit.php&t=13s 空白と空白を返す -> 正しくない
期待される結果 0 と 13

正規表現を変更するにはどうすればよいですか?

4

1 に答える 1

1

これを試すことができます:

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

これにより、 を含む最初の部分をmオプションにすることができます。2番目のケースで$1は、空の文字列にする必要があります。

を含む別の(?:キャプチャされた文字列を取得しないようにしますm

これも機能し、ほとんど同じことを行います。

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

ここでは、数字の最初の文字列を空にし、mオプションにすることができます。?繰り返しを非貪欲にするために、 の後に必ず使用し*てください。そうしない1と、 は最初の繰り返しで一致し、m除外さ3れ、 は 2 番目の繰り返しで一致します。

于 2012-10-19T08:01:28.437 に答える