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']
我不明白的是在正则表达式伙伴上一切似乎都很好。
最佳答案
尝试将正则表达式更改为:
var myregexp = /(\S+)(?:,\s|$)/g;
我认为循环可能是因为它在末尾重复匹配了一个空字符串。
因为我认为您对获得零长度名称不感兴趣,所以这可能是一般来说更好的正则表达式。
关于javascript - 为什么这个正则表达式会导致无限循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14406690/