为什么使用RegEx组拆分包括结果中的组?

时间:2015-03-17 02:07:41

标签: javascript regex

我不明白这一点。

> 'a\nb'.split(/\n/)       
[ 'a', 'b' ]               
> 'a\nb'.split(/(\n)/)     
[ 'a', '\n', 'b' ]         

为什么?

1 个答案:

答案 0 :(得分:2)

String.prototype.split

上引用MDN文档
  

如果分隔符是包含捕获括号的正则表达式,则每次匹配时,捕获括号的结果(包括任何未定义的结果)都会拼接到输出数组中。

引用ECMAScript 5.1 Standard Specification for String.prototype.split

  

如果分隔符是包含捕获括号的正则表达式,则每次匹配分隔符时,捕获括号的结果(包括任何未定义的结果)都会拼接到输出数组。例如,

"A<B>bold</B>and<CODE>coded</CODE>".split(/<(\/)?([^<>]+)>/)
     

计算数组

["A", undefined, "B", "bold", "/", "B", "and", undefined, "CODE", "coded", "/", "CODE", ""]

因此split仅按预期工作。