2014-04-07 67 views
3

我想驗證一個不應該是00000的5位數字。除了00000之外的所有數字都是允許的。接受除5個連續0之外的所有數字:Javascript

示例:01201,00001,21436,45645是有效數字,而1,12,123,1234,00000是無效數字。我試過^([0-9]{5}[^(0){5}])$,但它沒用。

對此的任何幫助將不勝感激。

謝謝。

+4

約string.length減什麼= 5 &&字符串= 「00000」 ? [編輯:好的,測試數字度需要正則表達式,請參閱@ mplungjan的答案] – Jasper

回答

8

使用負得正前瞻:

/^(?!0{5})\d{5}$/ 

/^(?!0{5})\d{5}$/.test('01201') 
// => true 
/^(?!0{5})\d{5}$/.test('00001') 
// => true 
/^(?!0{5})\d{5}$/.test('21436') 
// => true 
/^(?!0{5})\d{5}$/.test('1') 
// => false 
/^(?!0{5})\d{5}$/.test('12') 
// => false 
/^(?!0{5})\d{5}$/.test('00000') 
// => false 
+0

嘿,這工作像一個魅力,我upvoted你的答案。唯一我想知道的是如何在JavaScript中使用lookahead。簡單的解釋或簡單的教程鏈接將對我有所幫助。 –

+0

@NareshRavlani,閱讀[正則表達式教程 - Lookahead和Lookbehind Zero-Length Assertions](http://www.regular-expressions.info/lookaround.html)將會有所幫助。 – falsetru

+0

嘿謝謝人.. !! :) –

5

可以使用定向排除:

^(?!0{5})\d{5}$ 

負廁所提前(?!...)會,如果裏面有什麼失敗,整個正則表達式它匹配,\d[0-9]的快捷方式。

2

的正則表達式引擎不支持前瞻:

^(0000[1-9]|000[1-9][0-9]|00[1-9][0-9]{2}|0[1-9][0-9]{3}|[1-9][0-9]{4})$ 
8

無需負先行

Live Demo

function isvalid5(str) { 
    return str != "00000" && /^\d{5}$/.test(str); 
} 
+0

你的正則表達式中有一個錯字,它應該以'^'而不是'$'開頭。 – TimWolla

+0

是的,謝謝..... – mplungjan

相關問題