Javascript 为什么使用正则表达式组进行拆分会在结果中包含该组?

Javascript 为什么使用正则表达式组进行拆分会在结果中包含该组?,javascript,regex,Javascript,Regex,我不明白 > 'a\nb'.split(/\n/) [ 'a', 'b' ] > 'a\nb'.split(/(\n)/) [ 'a', '\n', 'b' ] 为什么?引用 如果分隔符是包含捕获括号的正则表达式,则每次匹配分隔符时,捕获括号的结果(包括任何未定义的结果)都会拼接到输出数组中 引用 如果分隔符是包含捕获括号的正则表达式,则每次匹配分隔符时,捕获括号的结果(包括任何未定义的结果)都会拼接到输出数组

我不明白

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

为什么?

引用

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

引用

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

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

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

因此,
split
只能像预期的那样工作。

哈哈,否决票是可以理解的。好。。。我认为这仍然令人困惑。@StevenLu您已经知道在这种情况下不需要捕获组,那么为什么需要非捕获组作为解决方案呢?:-)这个问题过于简单化了。。。基本上,我希望永远不会在结果数组中看到分隔符本身之外的内容,因此,最小程度地更改正则表达式的方法是将其设置为非捕获组,这可能需要一个组在拆分结果中不再包含该组。在这种情况下,非捕获组将起作用。事实上,我早些时候尝试过,但7分钟后我才被允许接受。