我可以選擇使用正則表達式來驗證一些值,我想知道最好的方法來做到這一點。正則表達式來驗證幾個值的範圍(.NET)
我有幾個範圍(不是在同一正則表達式/驗證)如1-9(這是很容易:P),和:
1-99
1-999
1-9999
此外,我需要檢查前導零,所以,0432是一個可能的匹配。
我知道Regex可能不是最好的方法,但這是我的,也是我必須使用的框架的一部分。
我可以選擇使用正則表達式來驗證一些值,我想知道最好的方法來做到這一點。正則表達式來驗證幾個值的範圍(.NET)
我有幾個範圍(不是在同一正則表達式/驗證)如1-9(這是很容易:P),和:
1-99
1-999
1-9999
此外,我需要檢查前導零,所以,0432是一個可能的匹配。
我知道Regex可能不是最好的方法,但這是我的,也是我必須使用的框架的一部分。
最簡單的方法(ñ是數字量):
[0-9]{n}
你好鮑比。我試過這種方式。但有時候我不想要第一個0。 – 2010-09-14 12:30:37
我你想要什麼不是100%清楚,但或許這樣的東西嗎?
\d{1,2}
這是相當於\d\d?
和將匹配任何一個或兩個位數字,即任何數量的從0到99,其中包括前導零。
如果你真的想排除0
,然後事情就變得很多更加複雜。
基本上,您需要明確檢查1-9和01-09。允許號碼的第三組將有兩位是做不開始以零:
0?[123456789]|[123456789]\d
現在|
之前的部分將檢查它是否是低於10的數字,可選的前導零。第二個選擇將檢查它是否是從0開始的兩位數字而不是。
其餘範圍可以通過擴展來檢查。
有一個根本缺陷與所有其他答案!
bool isMatch = Regex.IsMatch("9999", @"\d{1,3}");
雖然數字不是1-3位數,但返回true。這是因爲單詞的一部分與表達式匹配。
您需要使用:
bool isMatch = Regex.IsMatch("9999", @"^\d{1,n}$");
其中N是最大位數。
UPDATE
爲了確保它不爲零,將其更改爲以下:
bool isMatch = Regex.IsMatch("9999", @"(^\d{2,n}$)|[1-9]");
更新2 它仍然如果我們是行不通的00或000或0000.我的大腦受傷了,我會再看看。我們可以將它作爲兩個表達式(「(^ \ d {2,n} $)| [1-9]」和NOT(0)|(00)|(000)|(0000)),但可能不是接受爲一個單一的正則表達式答案。
請詳細說明您想要的內容,最好使用有效值和無效值的示例。 – 2010-09-14 12:02:01