2013-05-04 92 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]+