为什么只有一个存在时,此匹配返回两个结果

时间:2013-11-13 17:33:10

标签: javascript regex

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

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

1 个答案:

答案 0 :(得分:4)

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

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

  

如果正则表达式不包含g标志,则返回   与regexp.exec(字符串)相同的结果。

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

  

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