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;
}
我想要匹配的字符串就像这个�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']
我不明白的是正则表达式好友一切似乎都好。
答案 0 :(得分:5)
尝试将正则表达式更改为:
var myregexp = /(\S+)(?:,\s|$)/g;
我认为循环可能是因为它在末尾重复匹配一个空字符串。
由于我认为你不想获得零长度名称,所以这可能是一个更好的正则表达式。
答案 1 :(得分:2)
只是为了兴趣,使用零宽度正向前瞻断言的一种更简单的方法:
function listPlayers( subject ) {
return subject.match( /\S+(?=,\s|$)/g );
}