我有这样的号码
90.1103.41
90440036.1112.227
90.1112.228
90.1001.0009
如何在c#中验证RegularExpression?
答案 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+$
m
和n
将替换为最后一组之前的最小和最大组数。
另一种表达确切数量的数字组的方法是:
^(\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
强> 的 匹配任何十进制数字。的
\.
强> 的 匹配.
字符的
?
强> 的 匹配前一个元素零次或一次。的
+
强> 的 匹配前一个元素一次或多次。