2013-10-30 27 views
1

我有這樣的正則表達式匹配整數正則表達式來沒有領先對手整零(S)

var reg = /^\d+$/; 

我也希望它確保1周或更多的0不佈置於前

var reg = ^[0\d]\d+$ 

這是我迄今爲止,但沒有工作。

這怎麼辦?

測試通過

1 
12 
1232164 

測試失敗

0 
01 
00004241 
fbhf 
"" 
a123 
+0

01應該通過?無法理解你需要匹配什麼 –

+0

我想匹配一個整數,並不是以1或更多的零開頭@ X-Pippes – ojhawkins

+3

我想你想要:var reg =^[1-9] \ d + $ –

回答

7

我想開始你想要:

var reg = "^[1-9]\d*$"; 

如果必須匹配空字符串,最好在運行reg exp之前檢查空字符串。否則,你能做到這一點在本難讀的正則表達式:

var reg = "^(|[1-9]\d*)$"; 

它檢查空字符串或者一個或多個以零開頭的數字。

+0

我怎樣才能匹配一個空字符串與此? @Jeanne Boyarsky – ojhawkins

+0

只需添加一個問號以使第一個數字可選。我編輯過。 –

+0

添加的問號再次使模式匹配數字前導零。在應用正則表達式之前更好地檢查空字符串,或使用'^([1-9] \ d *)?$'。 – reima

7

嘗試這個表達式

[1-9]+[0-9]* 

這會讓你有一個數字,不是零

+0

匹配'a123' @ X-Pippes – ojhawkins

+1

不,不匹配a123。 只接受數字,不能從0開始 –

+0

嗯,當我使用這個工具http://regexpal.com/,匹配'a123'。你可以仔細檢查一下嗎? – ojhawkins

0

嘗試這種解決方案:

0 *([1-9] [0-9] * | 0)

+0

歡迎來到Stack Overflow!雖然這段代碼可能會回答這個問題,但爲什麼和/或代碼如何回答這個問題提供了額外的背景,這提高了它的長期價值。 – dferenc

相關問題