2012-03-13 50 views
0

我有以下的正則表達式表達^(([0-9]{1,2})|100|888|777|999)$這些值匹配時,除了零

這允許某人輸入數字:0-99,100,888,777,999

我現在有改變的表達允許:1-99,100,888,777,999(基本上ZERO現在是不允許的)

我想到做^(!0|([0-9]{1,2})|100|888|777|999)$ ......但是這當然不起作用,因爲那樣會說「if它不是零,我們很好「

任何廣告副?

+0

你嘗試[1-9] {1,2},而不是[0- 9] {1,2}? – 2012-03-13 19:55:09

+0

'10'怎麼樣? – Dan 2012-03-13 19:55:37

+1

@MarshallConover這不起作用,因爲它不會匹配任何2位數字和0。 – twain249 2012-03-13 19:55:52

回答

5

嘗試分裂斷的情況下爲一個數字VS兩位數字:

^([0-9]|([1-9][0-9])|100|888|777|999)$

,然後取下0:

^([1-9]|([1-9][0-9])|100|888|777|999)$

現在,你有,有一個明顯的方法爲了簡化它:

^(([1-9][0-9]?)|100|888|777|999)$

所以,twain249,如果你想在與前過度零的數字閱讀,但你不會想比賽,包括他們:

^0*(([1-9][0-9]?)|100|888|777|999)$

+1

我不知道他是否想要消除像'02'這樣的數字,但修改你的正則表達式來處理它是很容易的。 – twain249 2012-03-13 20:00:46

+0

感謝您向我展示您的思維過程......等待將此標記爲答案的能力:P – peroija 2012-03-13 20:01:29

+0

@ twain249我沒有想到這個問題,但是這裏是爲其他人提供的 '^(([0-9] [ 1-9] {1})|([1-9] [0-9])|?100 | 888 | 777 | 999)$' – peroija 2012-03-13 20:03:55

1

這應該實現你想要的:

^(([1-9][0-9]?)|100|888|777|999)$ 
1

^([1-9] [0-9]?)| 100 | 888 | 777 | 999 $