2012-04-27 4 views
0

私はいくつかのコードを見ていると、次の正規表現見つかっています:この正規表現は正確に何をしていますか?

var querystring = querystring.replace(/[^&]+=\.?(?:&|$)/g, '') 

は、このクエリ文字列を取り、スペースでアンパサンドまたは疑問符で始まるすべての値を置き換えることですか?ここに私が見ていないことが増えていますか?

あなたは論理的な説明を非常に感謝し、正規表現の理解を少し助けてください。ありがとう!

+0

これは/[^&]+=\.?(?:|$$)/gに一致するすべての文字列を削除します(2番目の引数はスペースではなく空の文字列です)。 – GillesC

+0

クエリ文字列が同じ行で検索/置換され定義されるのはなぜですか? –

+0

これはフォーム処理スクリプト上にあり、上記の行の前にクエリ文字列がシリアライズされています: 'var querystring = $(this).serialize();' –

答えて

3

値がクエリ文字列からこれらのパラメータを削除するように見える:たとえば.

に等しい

  1. "remove1=&remove2=.&keep1=..&keep2=a&keep3=b".replace(/[^&]+=\.?(?:&|$)/g, '') 
    // returns "keep1=..&keep2=a&keep3=b" 
    
+0

文字列から空の値を整理しています。優秀な返信、非常に感謝!乾杯! –

2

[^&]+ 1つ以上の非 "&" の文字

=リテラル "=" 文字

\.?オプションの ""

(?:&|$)「&」の文字または文字列の末尾

は、例えばでしょう一致

フーバー=。 &
A =

関連する問題