Javascript拆分可以保持拆分价值吗?

时间:2016-03-15 21:49:46

标签: javascript regex split

在Javascript中:

i+1

输出:var myString = "This is my string"; console.log(myString.split(/(\s)/));

["This", " ", "is", " ", "my", " ", "string"]

输出:console.log(myString.split(/\s/));

为什么会这样?

2 个答案:

答案 0 :(得分:2)

您使用的两个正则表达式略有不同。

/(\s)/有一个\s的捕获组,因此当与split()一起使用时,它会将捕获组中找到的任何内容添加到数组中。

正则表达式/\s/没有捕获组,因此split()会忽略匹配项并且不会将它们添加到数组中。

同样,如果你执行:

var myString = "This is my string";

console.log(myString.split(/(my)/));  //includes matched capture group in results
console.log(myString.split(/my/));  //ignores matches

将输出:

  

["这是","我的","字符串"]
  ["这是","字符串"]

希望有所帮助!

答案 1 :(得分:0)

如果您对拆分模式使用“捕获”组,那么假设您可能对该组感兴趣,因此Javascript会将该组添加到结果中。

例如,如果您使用“非捕获”组,则拆分的结果与完全不使用组时的结果相同。

"This is my string".split(/(?:\s)/) → ["This", "is", "my", "string"]

实际上,在某些情况下,您可能需要一个匹配的捕获组(例如,如果您需要反向引用),但您对分隔符不感兴趣。这些情况下的解决方法是简单地保留结果的每个其他元素。