正则表达式允许带有一个点或逗号的数字

时间:2013-03-14 14:56:25

标签: c# regex

你们中的任何人都可以帮助我使用接受这些的正则表达式:

1112312.2312312
1.23123
1,231
1.2344
123.123
123123

......但不是这些:

.1123
,2313
123.231.32
123..12

2 个答案:

答案 0 :(得分:9)

<强>更新

此解决方案将符合更新的要求:

^\d+(?:[\.\,]\d+)?$

这是一个基本表达式,只允许一个点或逗号,并要求表达式的其余部分为数字。

^\d*[\.\,]\d*$

即使没有数字,这也只会匹配.,

如果您想要在点或逗号的每一边至少需要一位数字,请使用:

^\d+[\.\,]\d+$

(我认为这是您想要的,基于您的样本数据)。

如果您只需要至少一位数,请使用此(使用预测):

^(?=.*\d)\d*[\.\,]\d*$

这也会使点/逗号成为可选:

^(?=.*\d)\d*[\.\,]?\d*$

答案 1 :(得分:1)

这应该可以解决问题:

var test = new Regex(@"^\d+([\.\,]?\d+)?$");

用法:

bool isValid = test.IsMatch("1.1"); //true