1

JavaScriptのニュアンスをより深く理解したいと思います。

以下の関数を使用します。

str.replace(/(\b[^:]+):'([^']+)'/g, function ($0, param, value) {
    ret[param] = value;
});
  • なぜ /g が必要なのですか?
  • 関数には正確に何が渡されますか?
  • これらの値はどこから来たのですか?

ありがとう!

4

2 に答える 2

5

なぜ /g が必要なのですか?

おそらく、一致する文字列に複数のペアがあるためです。a:'b' c:'d'

関数には正確に何が渡されますか?

コールバック関数は、一致全体を最初の引数として取得します。後の 2 つの引数は、正規表現で指定されたキャプチャ グループです。

例えば:

"a:'b' c:'d'".replace(/(\b[^:]+):'([^']+)'/g, function ($0, param, value) {
    console.log($0, param, value);
});

コールバックは 2 回実行され、最初の実行で"a:'b'"for $0"a"for param、および"b"forが表示されます。value

2 回目の実行 (2 回目の一致) では、 "c:'d'"for $0"c"for param、および"d"for の値が表示されます。

于 2010-09-09T18:20:30.067 に答える
1

/gのgはグローバルを表します。これにより、すべての一致が置き換えられます。/ gがない場合、最初の一致のみが置き換えられます。/ i(大文字と小文字を区別しない)は、もう1つの一般的に使用されるスイッチです。

javascriptエンジンは、文字列内で(正規表現の)一致を見つけるたびに、各一致のパラメーターを使用して渡した関数を呼び出します。

ここで詳しく説明します

于 2010-09-09T18:26:07.747 に答える