使用正则表达式将字符串拆分为单词数组

Mik*_*sen 6 javascript regex

我正在尝试将一个字符串拆分成一个单词数组,但是我想在每个单词后面保留空格.这是我正在尝试的:

var re = /[a-z]+[$\s+]/gi;
var test = "test   one two     three   four ";
var results = test.match(re);
Run Code Online (Sandbox Code Playgroud)

我期望的结果是:

[0]: "test   "
[1]: "one "
[2]: "two     "
[3]: "three   "
[4]: "four "
Run Code Online (Sandbox Code Playgroud)

但是,每个单词后最多只匹配一个空格:

[0]: "test "
[1]: "one "
[2]: "two "
[3]: "three "
[4]: "four "
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Kob*_*obi 9

考虑:

var results = test.match(/\S+\s*/g);
Run Code Online (Sandbox Code Playgroud)

这样可以保证你不会错过任何角色(除了开头的几个空格,但\S*\s*可以照顾它)

你原来的正则表达式是:

  • [a-z]+ - 匹配任意数量的字母(至少一个)
  • [$\s+]-多一个字符- $,+或空白.在此组之后没有量词,您只匹配一个空格.