2

クライアント側のJavaScriptの一部で次の正規表現に出くわしました:

([^?=&]+)(=([^&]*))?

正規表現テスター (Firefox アドオン) を実行すると、URL のクエリ文字列の値が 1 つの色で強調表示され、疑問符とアンパサンドはまったく強調表示されず、残りは別の色で表示されます。

どちらか一方、または両方に一致するかどうかはわかりませんが、置換オプションを使用しても何も置換されません。

それは私の質問の始まりにすぎません。完全なコードは次のとおりです。

var linkObj = new Object();
jQuery(this).attr('href').replace(
    new RegExp( "([^?=&]+)(=([^&]*))?", "g" ),
    function( jQuery0, jQuery1, jQuery2, jQuery3 ){
        linkObj[ jQuery1 ] = jQuery3;
    }
);

関数のこれらの 4 つのパラメーターは何(jQuery0, jQuery1, jQuery2, jQuery3)ですか?

どんな助けでも大歓迎です。

ありがとうございました。

4

1 に答える 1

3

URL の GET 部分を分解しているように見えます。

([^?=&]+)      # 1 or more characters, exclusive of ?, = or &
(=             # = sign
  ([^&]*)        # any character not a &, 0 or more times
)?             # but optional

function、replace が正規表現呼び出しで受け入れることができるコールバックです。各引数は、正規表現一致内で見つかった異なる値です。関数は、replaceメソッドが代入する必要がある結果を返すことができます)。したがって、与えられた?foo=bar

  • jQuery0 - 完全一致
  • jQuery1 - 最初のキャプチャ (例foo)
  • jQuery2 - 2 番目のキャプチャ ( =bar)
  • jQuery3 - 3 番目の (ネストされた) キャプチャ ( bar)
于 2012-04-16T13:53:23.570 に答える