2017-01-22 121 views
0

的開始我需要寫正則表達式表達,其可以禁止輸入到具有兩個連續零在輸入開始正則表達式的兩個連續零的在輸入端

我已經以下正則表達式RightNow的 /[^ 0-9] +/g 這裏有一個問題,因爲它允許在輸入開始處有很多零,這是錯誤的,理想情況下,如果用戶先輸入零,然後再輸入任意數字,零開始有效輸入應爲0,1,01,100,900,100,000,980980567000等 無效輸入00,001,00100,00100000,000087990432等

+0

你想讓你的正則表達式匹配有效或無效的輸入嗎? – tavnab

+0

此外,書面的問題似乎與angularjs沒有關係。請刪除該標籤。 – tavnab

回答

2

匹配invali d輸入:/^00\d*/

匹配有效輸入:/^(?!00)\d/*

^代表該字符串的開頭
00 2個consecutives零
(?!00)匹配是連續兩個零
\d*匹配任何序列的負前瞻數字

+0

對不起,如果我不清楚,但我想寫正則表達式,如果發現無效字符,然後用空字符串('')替換無效字符。在我的情況下,字符應該是有效的,如果他們只是積極的數字,他們不開始兩個或更多的零。 var pattern =/^ [0] {0,1} [1-9] \ d {0,} /; var parsed = val.replace(pattern,''); 注意:val是類似於abcdgj,0010000,0001111198等的輸入等 但使用上述表達式,它允許輸入任何其他字符,如字母,特殊字符,負數等,這在我的場景中是錯誤的。 – zubairm

0

要匹配任何字符串開頭的靜態字符串(包括「00」),可以使用^主播。

要匹配以「00」開頭的字符串,您的正則表達式應爲/^00/。如果你想具體數字字符串,/^00[0-9]*/

+0

對不起,如果我不清楚,但我想寫正則表達式,如果發現無效字符,然後用空字符串('')替換無效字符。 在我的情況下,這些字符應該是有效的,如果它們只是正數,並且它們不以兩個或更多個零開始。 var pattern =/^ 00 [0-9] * /; var parsed = val。替換(pattern,''); 注:VAL就像abcdgj,0010000,0001111198等等等等輸入 但在使用你的表情就可以輸入任何其他字符,以及像字母,特殊字符,負數等等等,這是錯誤的,我的情況 – zubairm

+0

如果您問題是關於替換部分字符串,你能否更新它來準確地說明你在找什麼? – tavnab

0

正則表達式匹配器很擅長說什麼必須匹配,但是告訴匹配器什麼是不匹配的是一個小技巧。要匹配以00開頭的所有字符串,必須匹配所有以不同於0開頭的字符串,並且所有以0開頭的字符串不會繼續使用0(即空字符串有效,因爲字符串0不以00),所以這樣的一個合適的表達可以是:

^[^0].*$|^0([^0].*)?$ 

詳見demo