1

当字符串中只存在一个时,为什么这个匹配会返回两个相同的匹配?

/^(.*)$/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

你没有两场比赛。数组中的第一个条目是整个匹配,第二个是第一个捕获组的结果(顺便说一下是整个匹配)。

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

返回的数组将匹配的文本作为第一项,然后是每个匹配的包含捕获的文本的捕获括号的一项。

于 2013-11-13T17:34:36.827 回答