1

文字列に 1 つしか存在しないのに、この一致が 2 つの同一の一致を返すのはなぜですか?

/^(.*)$/m


<textarea id="input">one    two three   four    five
1111    2222222 333 444444  555
1111    2222222 333 444444  555
1111    2222222 333 444444  555
    1111    2222222 333 444444  55</textarea>  

var str = $("#input").val();

var arr = str.match(/^(.*)$/m);

console.dir(arr); 
/*
Array[2]
    0: "one two three   four    five"
    1: "one two three   four    five"
    index: 0
    input: "one two three   four    five↵1111   2222222 333 444444  555↵1111    2222222 333 444444  555↵1111    2222222 333 444444  555↵    1111    2222222 333 444444  55"
*/

JSBIN

4

1 に答える 1

4

2 つの一致はありません。配列の最初のエントリは一致全体で、2 番目は最初のキャプチャ グループの結果です (ちなみにこれは一致全体です)。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match

正規表現に g フラグが含まれていない場合、regexp.exec(string) と同じ結果を返します。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec

返された配列には、最初の項目として一致したテキストがあり、次に、キャプチャされたテキストを含む、一致したキャプチャ括弧ごとに 1 つの項目があります。

于 2013-11-13T17:34:36.827 に答える