c#中数字的正则表达式

时间:2013-01-08 06:04:59

标签: c# regex

我有这样的号码

90.1103.41
90440036.1112.227
90.1112.228
90.1001.0009

如何在c#中验证RegularExpression?

3 个答案:

答案 0 :(得分:2)

使用\d字符类匹配数字(字符'0' - '9')。

+匹配前一个实体(组/字符/等)的至少一次出现。

使用\.匹配文字句点字符('.')。

^$表示该模式必须匹配从开头到结尾的字符串。

using System.Text.RegularExpressions;

...

const string pattern = @"^\d+\.\d+\.\d+$";
Regex.IsMatch("90.11103.41", pattern);       //true
Regex.IsMatch("90440036.1112.227", pattern); //true
Regex.IsMatch("90.1112.228", pattern);       //true
Regex.IsMatch("90.1001.0009", pattern);      //true

如果您的要求是至少有两组数字,您可以使用以下模式:

^(\d+\.)+\d+$

如果您的要求是至少有一组数字,您可以使用:

^(\d+\.)*\d+$

如果您的要求是可以接受某些固定数量的组,则可以使用

^(\d+\.){m,n}\d+$

mn将替换为最后一组之前的最小和最大组数。

另一种表达确切数量的数字组的方法是:

^(\d+\.){m}\d+$

其中m是所需数量的组减去1

的占位符

答案 1 :(得分:1)

你可以试试这个:

string yourNumber = "90440036.1112.227";

Match m = Regex.Match(yourNumber,@"[\d\.]+")

if(m.Success)
{
    //valid
}

else
{
    //invalid
}

答案 2 :(得分:0)

<强>已更新

尝试

^(?:\d\.?)+$

和你的代码:

bool foundMatch = Regex.IsMatch(inputString, @"^(?:\d\.?)+$");

123.456.789        valid
123...456789       invalid
...123..           invalid
123456             valid

解释

  

(?:subexpression) 的   定义一个非捕获组。

     

\d 的   匹配任何十进制数字。

     

\. 的   匹配.字符

     

? 的   匹配前一个元素零次或一次。

     

+ 的   匹配前一个元素一次或多次。