2013-05-04 99 views
0

我想在C#中編寫一個只輸入特定數量的唯一數字的正則表達式。特定位數的正則表達式

就像寫一個正則表達式驗證像5個位數號碼,「12345」

+2

請向我們展示您自己的嘗試。 Stackoverflow不在這裏爲你做你的工作,而是在你被困時幫助你做你自己的努力。 – 2013-05-04 11:44:00

+1

http://msdn.microsoft.com/en-us/library/az24scfc.aspx – nhahtdh 2013-05-04 11:44:33

回答

20

使用以下正則表達式與Regex.IsMatch方法

^[0-9]{5}$ 

^$將錨定匹配的開始和字符串(分別)的端部,以防止一個匹配在中間被發現長字符串,例如1234567890abcd12345efgh

[0-9]指示字符類,其指定從09的字符範圍。範圍由以指定字符開頭和結尾的Unicode代碼範圍定義。後面的{5}量詞表示重複5次的[0-9]

注意的^\d{5}$溶液只相當於上述溶液中,當指定RegexOptions.ECMAScript,否則,it will be equivalent to \p{Nd},它匹配任何Unicode位數 - 這裏是the list of all characters in Nd category。您應該始終檢查您正在使用的語言的文檔,以瞭解速記字符類實際匹配的內容。

我強烈建議您通讀documentation。您可以使用其他資源,如http://www.regular-expressions.info/,但總是請檢查您正在使用的語言的文檔。

1

您可以指定爲在括號重複次數:

\d{5} 

如果你想你的整個輸入匹配一圖案將它們括在^$

^\d{5}$ 
+1

它不會匹配0-9數字。它也將匹配其他Unicode數字 – nhahtdh 2013-05-04 11:46:04

+0

@ m.buettner不,它只匹配5位數字。在另一場比賽中可能會返回更多數字。但是,如果OP要確保**整個**輸入由5位數組成,他可以使用'^'和'$'來反映我更新後的答案。 – 2013-05-04 11:49:52

+0

@nhahtdh OP不是特定於他想匹配的數字。 – 2013-05-04 11:51:34

-1

該表達式應該傳遞

\d{5}[^\d]+