Javascript split可以保留分割后的值吗?

Leo*_*out 5 javascript regex split

在 JavaScript 中:

var myString = "This is my string";

console.log(myString.split(/(\s)/));
Run Code Online (Sandbox Code Playgroud)

输出 :["This", " ", "is", " ", "my", " ", "string"]

console.log(myString.split(/\s/));
Run Code Online (Sandbox Code Playgroud)

输出 :["This", "is", "my", "string"]

为什么会出现这种情况?

Ada*_*ska 5

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

/(\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
Run Code Online (Sandbox Code Playgroud)

将输出:

[“这是”,“我的”,“字符串”]
[“这是”,“字符串”]

希望有帮助!