我想为最大长度为5的浮点数构建一个正则表达式。 我的号码可以有分隔符“,”或“。”或者它可以是自然数(不是浮点数)
我想允许任何这些值
XXXXX
XXXX.X
XXX.XX
XX.XXX
X.XXXX
X.X
X.XX
X.XXX
X.XXXX
XX.X
XXX.X
etc.
答案 0 :(得分:9)
答案 1 :(得分:0)
为什么不使用c#条件?类似的东西:
var x = 12345;
if (x.ToString().Length == 5 && x.ToString().Contains("."))
{
//do something
}
<强>更新强> 我已经创建了一个样本列表,就像你上面给出的那样,并使其列为double,因为int不接受小数。
List<double> doubleList = new List<double>(new double[]
{
12345,
1234.5,
123.45,
12.345,
1.2345,
1.2,
1.23,
1.234,
1.2345,
12.3,
123.4,
});
private void button1_Click(object sender, EventArgs e)
{
foreach (var x in doubleList)
{
bool isNum = Regex.IsMatch(x.ToString(), @"^\-{0,1}\d+(.\d+){0,1}$");
int countOfDot = Regex.Matches(x.ToString(), @"\.").Count;
if (countOfDot == 1 && isNum) //number w/ decimal place
{
string[] spLitX = x.ToString().Split('.');
if (spLitX[1].Count() <= 5) //float max of 5digits
{
Console.WriteLine(x);
}
}
else if (countOfDot == 0 && isNum) //number w/o decimal place
{
Console.WriteLine(x);
}
else
{
//do nothing . . .
}
}
}
输出:
12345
1234.5
123.45
12.345
1.2345
1.2
1.23
1.234
1.2345
12.3
123.4
答案 2 :(得分:-1)
^ \ S *(([0-9] {1,3}([0-9] {3})的 [0-9] {3})|。。([0-9] +))(,[0-9] {1,2})?\ s $应验证您的需求
编辑1:这将验证:
10000
100000,33
1.000,13
还有一件事,你可以根据自己的需要进行编辑。 希望这有帮助!