我有这样的号码
90.1103.41
90440036.1112.227
90.1112.228
90.1001.0009
如何在 C# 中验证正则表达式?
使用\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+$
Wherem
和n
将被替换为最后一组之前的最小和最大组数。
另一种表达精确数量的数字组的方法是:
^(\d+\.){m}\d+$
m
所需组数减去的占位符在哪里1
你可以试试这个:
string yourNumber = "90440036.1112.227";
Match m = Regex.Match(yourNumber,@"[\d\.]+")
if(m.Success)
{
//valid
}
else
{
//invalid
}
更新
尝试
^(?:\d\.?)+$
和你的代码:
bool foundMatch = Regex.IsMatch(inputString, @"^(?:\d\.?)+$");
123.456.789 valid
123...456789 invalid
...123.. invalid
123456 valid
解释
(?:subexpression)
定义一个非捕获组。
\d
匹配任何十进制数字。
\.
匹配.
字符
?
匹配前一个元素零次或一次。
+
匹配前一个元素一次或多次。