2012-11-03 66 views
1

我有一個例子:誤區有關正則表達式

var p = /^(\d)+$/; 
var s = '834736'; 
var a = p.exec(s); 
console.log(a); 

我想組第一位^(\d),但結果是:

["834736", "6"] 

它趕上最後一位。任何人都可以向我解釋?謝謝!

回答

4

如果你只希望捕獲的第一個數字,把第一個數字組中,以及數字匹配其餘組外,像這樣:

/^(\d)\d*$/ 

的原因,你只趕上最後一個數字是,你重複相同的組爲你匹配每個數字。這意味着,每次匹配一個新數字時,該組的舊內容將被替換,因此您將得到最後一個數字作爲組的結果。

+0

感謝您的回答。但你能告訴我爲什麼我的上面的正則表達式抓住最後一位數字嗎? –

+2

@BoodCarley您將'+ +'放在捕獲組外,所以捕獲組一次只匹配1個數字,直到它不再匹配,此時它包含最後一位數字。 – Zirak

2

你應該把+組內或(如果你只想要第一個數字)分割表達式:

/^(\d)\d*$/