我需要一個正則表達式來匹配0到99之間的任何數字。可能不包含前導零,這意味着f.ex. 05是不允許的。沒有前導零的數字的正則表達式
我知道如何匹配1-99,但不包括0。
我爲1-99的正則表達式是
^[1-9][0-9]?$
我需要一個正則表達式來匹配0到99之間的任何數字。可能不包含前導零,這意味着f.ex. 05是不允許的。沒有前導零的數字的正則表達式
我知道如何匹配1-99,但不包括0。
我爲1-99的正則表達式是
^[1-9][0-9]?$
[...],但沒有得到0包括在內。
只是在表達前面加0|...
:
^(0|[1-9][0-9]?)$
^^
^(0|[1-9][0-9]?)$
測試http://regexr.com?2uu31(各種樣品含)
您必須添加一個0|
,但要注意的是,「或」(|
)中的正則表達式具有最低的優先級。 ^0|[1-9][0-9]?$
在現實中意味着(^0)|([1-9][0-9]?$)
(我們將忽略那個現在有兩個捕獲組)。所以它的意思是「字符串以0
開頭」或「字符串以[1-9][0-9]?
結尾」。使用括號的替代方法是重複^$
,如^0$|^[1-9][0-9]?$
。
我嘗試了一切,但沒有這樣做。:(爲什麼我需要外括號?我不明白。 – AGuyCalledGerald
@ Jan-FrederikCarl因爲'|'沒有優先級,所以沒有括號,'^ 0 | [ 1-9] [0-9]?$ ==(?:^ 0)|(?:[1-9] [0-9]?$)'(其中'(?:)'是非捕獲但是你想要的東西等於'(?:^ 0 $)|(?:^ [1-9] [0-9]?$)' – xanatos
這應該做的伎倆:
^(?:0|[1-9][0-9]?)$
不使用或操作員一個簡單的回答讓前面的數字可選:
^[1-9]?[0-9]$
較量0-99禁止前導零(01-09) 。
有很多方法可以做到這一點,但這裏是另一種允許任何數量的長度沒有前導零
0-99:
^(0|[1-9][0-9]{0,1})$
0-999(只是增加{0,}):
^(0|[1-9][0-9]{0,2})$
1-99:
^([1-9][0-9]{0,1})$
1-100:
^([1-9][0-9]{0,1}|100)$
世界上任何一個號碼
^(0|[1-9][0-9]*)$
12至999
^(1[2-9]|[2-9][0-9]{1}|[1-9][0-9]{2})$
如果我想在12到999之間添加範圍,那麼正則表達式是什麼? –
'^(1 [2-9] | [2-9] [0-9] {1} | [1-9] [0-9] {2})$' – Guish
試試這個它會幫助你
^([0-9]|[1-9][0-9])$
這曾經是一個最右邊的,但你只是有你的可選參數'?'在第二位數字而不是前導數字。 –