2012-04-16 12 views
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; 
    } 
); 

機能(jQuery0, jQuery1, jQuery2, jQuery3)のもの4つのパラメータは何ですか?

ご協力いただければ幸いです。

ありがとうございます。

+1

['String.replace'](https://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/String/replace)をご覧ください。 –

答えて

3

URLのGET部分を分割して表示されます。

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

functionは、置き換え可能なコールバックで、正規表現呼び出しで受け入れることができます。各引数は、正規表現マッチ内で見つかった異なる値です。この関数は、replaceメソッドで置き換えられる結果を返すことができます)。だから、?foo=bar与えられた:

  • jQuery0 - 完全一致
  • jQuery1 - 最初のキャプチャ(例えばfoo
  • jQuery2 - 第二の捕捉(=bar
  • jQuery3 - 第三(ネスト)キャプチャ(bar
+0

それを分解する例:http://jsfiddle.net/SQaFg/ –

+0

Brilliant - ありがとうBrad – Graham

関連する問題