2012-10-31 60 views
1

我想使用Javascript的正則表達式驗證數量字段的內容。正則表達式 - 數量字段

有效輸入將是一個整數,從零開始向上。如果前導零可以被刪除,那就太好了。

例子

1   Pass 
0   Pass 
01  Failed 
00  Failed 
-1  Failed 
1.1  Failed 
1000000 Pass 

我曾嘗試自己,但我得到的最好的是...

var regex = /[0-9]{1,9}/; 

...不就負數失敗,或數字與前導零。

謝謝!

+0

01是一個有效的> = 0的整數,以及00. – m0skit0

回答

4

這個正則表達式匹配沒有前導0(除了0本身,單獨處理)的任何數字序列。

var regex = /^0$|^[1-9][0-9]*$/; 

^$是錨,其中錨的匹配的字符串的開頭和結尾。這意味着,在數字之前或之後都不允許任何內容,因此,不能包含減號。

+0

0好抓! –

+0

完美。我知道你的stackoverflow的人不會讓我失望! –

0

嘗試^\d+$。應匹配正整數。

+0

這將匹配01例如 – m0skit0

+0

不處理前導零。 –

1

如果你想刪除領先,而不是零禁止他們,那麼你可以使用這個:

^0*(\d{1,9})$ 

現在你會發現數而不在拍攝組尾隨零沒有。 1(即使只輸入了一個0)。

0
var re = /^0*([^0]\d*)$/; 
var match = re.exec(str); 
if (match) { 
    var i = parseInt(match[1], 10); 
} 
else { 
    //whoops, not an integer 
} 

(match [1]返回沒有前導零的int,匹配整個匹配的字符串[0])。

+0

這不會自己處理'0',會嗎? –

+0

Bah。如果你把它改成parseInt(match [0],10),它會。正則表達式本身將匹配0. –

+0

不,它不會。它需要一個非零字符;) –