-3

我有这样的号码

90.1103.41
90440036.1112.227
90.1112.228
90.1001.0009

如何在 C# 中验证正则表达式?

4

3 回答 3

2

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

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

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

^and$表示模式必须从头到尾匹配字符串。

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+$

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

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

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

m所需组数减去的占位符在哪里1

于 2013-01-08T06:17:40.457 回答
1

你可以试试这个:

string yourNumber = "90440036.1112.227";

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

if(m.Success)
{
    //valid
}

else
{
    //invalid
}
于 2013-01-08T06:17:20.973 回答
0

更新

尝试

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

和你的代码:

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

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

解释

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

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

\. 匹配.字符

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

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

于 2013-01-08T06:07:43.233 回答