regex.exec永远在循环中运行

时间:2017-09-13 14:31:36

标签: javascript regex while-loop

所以我有一个文字:

  
    

Ankenævnetravedtagetatstadfæstehuslejenævnetsafgørelse。 Dettemedfører,位于lejen er nedsat,邮编207.437,60 kr。 svarende直到1.152 kr。     PR。 m²直到180.000 kr。 svarende直到1.000 kr。 PR。平方米。 (dissens)
    Lejenedsættelsenharvirkning fra 1. januar 2011.
    Trappelejeforhøjelsenpr。 1. juli 2011 kan endvidere ikke godkendes。     Lejen skal derforfortsatvære180.000kr。 årligtfradenne dato。
    存放tilsvarende nedsat直到45.000 kr。 svarende直到3个月     godkendt leje og forudbetalt leje直到30.000 kr。 svarende直到2     månedersgodkendtleje。 Udlejer har pligt to tilbagebetale for     meget betalt leje,depositum og forudbetalt leje med reter efter     renteloven fra betalingstidspunkterne。 Der henvises tillejelovens§     113 a,jf。 BILAG。倾向于为了meget betalt leje,depositum,     forudbetalt leje og renter senere end 1. august 2012 anses som en     翻译bestemmelser。

  

然后是以下javascript代码:

function getMatches(string, regex, index) {
    index || (index = 1); // default to the first capturing group
    var matches = [];
    var match;
    while (match = regex.exec(string)) {
        matches.push(match[index]);
    }
    return matches;
}


var myString = breadText;
var myRegEx = regStr;

var matches = getMatches(myString, myRegEx, 1);

console.log(matches);

请注意,变量breadText是上面显示的文本

运行它将导致永久循环(while循环)将永远运行并继续向匹配数组添加相同的结果。

我根本无法理解为什么?

有谁能看到我做错了什么?

1 个答案:

答案 0 :(得分:1)

而不是那个循环,只需使用var matches = string.match(regex)

如果正确构造正则表达式,则不需要循环遍历单独的匹配,尤其是如果您只是想以任何方式将结果推送到数组中。