为什么这个正则表达式导致无限循环?

Vit*_*.us 1 javascript regex

function listPlayers(subject){
    var players=[];

    var myregexp = /(\S*)(?:,\s|$)/g;
    var match = myregexp.exec(subject);
    while (match != null) {
         players.push(match[1]);
         match = myregexp.exec(subject);
    }
    return players;
}
Run Code Online (Sandbox Code Playgroud)

我想要匹配的字符串是这样的 ?r Henderson?r?f, Pedrin?r?f, ?c~?lArthur?r?f, John?r?f

我期望的输出是这样的数组 ['Henderson?r?f', 'Pedrin?r?f', '?c~?lArthur?r?f', 'John?r?f']

我不明白的是正则表达式好友一切似乎都好. 在此输入图像描述

Bar*_*mar 5

尝试将正则表达式更改为:

var myregexp = /(\S+)(?:,\s|$)/g;
Run Code Online (Sandbox Code Playgroud)

我认为循环可能是因为它在末尾重复匹配一个空字符串.

由于我认为你不想获得零长度名称,所以这可能是一个更好的正则表达式.