在字符串中查找一定数量的数字的正则表达式?

时间:2010-07-13 14:49:22

标签: c# asp.net regex

当用户提交表单时,我需要确保输入包含至少最少的位数。问题是我不知道输入的格式是什么。数字可能不会连续,可能由字母,标点符号,空格等分开。我不关心其余的字符串。

我想用RegularExpressionValidator检查一下,但我不太清楚如何编写正则表达式。

我想这类似于电话号码正则表达式,但电话号码至少有一些常见的格式。

3 个答案:

答案 0 :(得分:12)

以下内容将匹配包含至少n个数字的输入字符串:

Regex.IsMatch(input, @"(\D*\d){n}");

其中n是整数值。

一个简短的解释:

  • \D*匹配零个或多个非数字字符(\D[^0-9][^\d]的简写;
  • 所以\D*\d匹配零个或多个非数字字符后跟一个数字;
  • (\D*\d){n}组,并重复,之前的n次。

答案 1 :(得分:3)

我会接近这样的事情:

Regex.IsMatch(input, @"^(.*[0-9].*){10}$");

用文字表示,这将搜索10个数字,每个数字都被0个或更多个字符包围。由于。*是贪婪的,所以任何额外的数字也会被它们匹配。

无论如何,请查看http://regexlib.com/RETester.aspx如果没有要测试的东西,编写正则表达式真的很难。

答案 2 :(得分:0)

要获得至少n位数,您需要使用以下正则表达式:

(\ d * \ d){N,}

正则表达式(\ D * \ d){n}将恰好匹配n位数。

问候,卡洛。