2017-09-13 180 views
-1

所以我有一個文本:regex.exec運行永遠

上訴委員會已決定確認租金董事會的決定。這意味着,租金從207,437.60 KR降低,對應於1152 KR。 每。平方米至180,000 KR。,對應於1000 KR每。平方米。 (異議)
減租會從每1周2011年1月
步驟租金上漲的影響。 2011年7月1也可能不被批准。 租金必須繼續180.000 KR。一年從該日期。
存款是按比例縮小到45000 KR,相當於3個月 批准的租金和預付租金30000克朗相當於批准租金2 個月。房東有義務在 利益法從付款時間償還 多繳的房租,押金和預付租金利息。請參閱房租法§ 113一見。附件。多繳的房租,押金,預付款 不遲於8月1日的租金和利息償還,2012被認爲是 違反這些規定。

然後følgende片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); 

通知ATT變量breadText是上述所示的文本

運行,這將導致一個永遠的環路( while循環)將永遠運行和不斷增加的結果相同的兩個比賽陣列。

我根本無法理解,爲什麼?

任何人都可以看到香港專業教育學院做錯了?

+2

是什麼模式?必須匹配一個空字符串。 –

+3

stedet ATT環,只是使用'= string.match進行匹配(正則表達式)'。 – Cerbrus

+0

加入這一行的'while'循環中,如果'(match.index === regex.lastIndex)regex.lastIndex ++;' – anubhava

回答

1

stedet ATT循環,只需使用var matches = string.match(regex)

如果你構建你的正則表達式不當,不應該是沒有必要到環單獨的比賽,特別是沒有,如果你只是要去兩個推的結果爲數組丙氨酰方式。

+0

我幾乎酸性這不會起作用,因爲正則表達式包含全局修改(否則,BOR沒有'while')和全球在使用調節劑,'匹配()'不記得捕獲的值。這只是整個提取匹配良好。 –

+0

@WiktorStribiżew:' 「1234」 .match(/ \ d /)vs.'' 「1234」 .match(/ \ d /克)'。 '.match'不正是你需要的'g'標誌是什麼。 – Cerbrus

+0

它不會那麼容易,如果你需要兩個只能得到一個捕獲組值。您將需要通過匹配對象在兩個循環。 –