2012-08-23 85 views
7

我想寫一個正則表達式來允許數字和只有一個在中間(不能在開始或結束)HYPER 說模式:02-04,02是可以接受,但 模式:----0204-02-04-06是不可接受的正則表達式允許數字和中間只有一個連字符

我想是這樣的,但是,這將使 - 開頭,也允許多 -

'/^[0-9 \-]+$/' 

我用正則表達式不太好,所以一點解釋會很有幫助。

編輯:很抱歉打擾你再次用這個,但我需要的數字是隻有2位(123-346)應被視爲無效。

回答

12

嘗試這一個:

/^\d{1,2}(-\d{1,2})?$/ 

一個或兩個數字,隨後,任選地,(接着被一個或兩個數字的連字符)

+1

和我一樣的答案,但你擊敗了我。所以我添加了一個解釋,upvoted,並刪除了我自己的。 – slim

+0

謝謝你的解釋@slim我需要 –

+0

對不起,你再次遇到這個問題,但我需要的數字只有2位數(123-346)應該被認爲是無效的。 –

5

相當容易:

^\d+(-\d+)?$ 

至少一種(+)數字(\d),然後是包含一個連字符,減號(-)任選的基團,隨後在至少一個數位一次。

+0

但這會使'02'無效,因爲您的表達式需要連字符 –

+0

這與'02' –

+0

不匹配啊,對不起;忽略了表示連字符是可選的部分。現在修復。誠然,這個要求在這個問題上有點難以理解,因爲對模式的每個口頭解釋聽起來像是需要連字符減號。 – Joey

2

對於僅包含該圖案的字符串下面應該工作

^(\d{2}-)?\d{2}$ 

一組2位數字後跟減號結尾的一組2位數字沒有減號。

相關問題