2017-02-21 60 views
-2

我需要一個正則表達式來驗證用戶輸入的VLAN字符串。該字符串應該允許用逗號分隔的數字或範圍。編號必須正則表達式接受用逗號分隔的數字和/或數字範圍,但範圍在1-4093之間

下面允許樣品1和4093之間:

1, 
1,2,3,4 
1-10, 
1-4093 
4000 

下面我想:

^0*([1-9]|[1-8][0-9]|9[0-9]|[1-8][0-9]{2}|9[0-8][0-9]|99[0-9]|[1-3][0-9]{3}|40[0-8][0-9]|409[0-3])$ 

需要加強逗號分隔和範圍

+1

純代碼編寫請求是題外話堆棧溢出 - 我們希望這裏的問題涉及到具體* *編程問題 - 但我們會很樂意幫你自己寫!告訴我們[你試過的東西](http://stackoverflow.com/help/how-to-ask),以及你卡在哪裏。這也將幫助我們更好地回答你的問題。 –

+0

你能告訴我們你試過了什麼,結果是什麼? – SaggingRufus

回答

1

要匹配從1到4093的數字可以使用:

(?:[1-9]\d{0,2}|[1-3]\d{3}|40(?:[0-8]\d|9[0-3])) 

我們將打電話給N。現在重複部分:

^(N)(?:[,-] *(N)?)*$ 

這給:

^(?:[1-9]\d{0,2}|[1-3]\d{3}|40(?:[0-8]\d|9[0-3]))(?:[,-] *(?:[1-9]\d{0,2}|[1-3]\d{3}|40(?:[0-8]\d|9[0-3]))?)*$ 

Live demo

+0

非常感謝托馬斯。它完美的作品。 – Rinky

+1

@Rinky @Rinky請接受答案,因爲它可以幫助其他人確定問題已經解決,並且正確的信用發送給回答者 –

相關問題