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

标签 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;
}

我要匹配的字符串是这样的�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']

我不明白的是在正则表达式伙伴上一切似乎都很好。 enter image description here

最佳答案

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

var myregexp = /(\S+)(?:,\s|$)/g;

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

因为我认为您对获得零长度名称不感兴趣,所以这可能是一般来说更好的正则表达式。

关于javascript - 为什么这个正则表达式会导致无限循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14406690/

相关文章:

regex - 在matlab中将一个字符串分成两部分

javascript - 计算数组中 1 的迭代次数

javascript - JQuery 视觉差异插件

javascript - 更改 Twitter Typeahead 返回的内容

python - 验证 json 中指定的 python 正则表达式标志

java - 在java中使用正则表达式替换映射字符

javascript - Date.UTC() 0-100 之间的年份

javascript - 仅随机获取相同图像两次

c# - 如何提取 xaml/xml 文件中特定标签的所有出现?

javascript - 正则表达式错误分割 : by commas but not within brackets (both ) and ] )