Regex 严格十进制数的正则表达式

Regex 严格十进制数的正则表达式,regex,Regex,我想要一个regexp来验证十进制数: 有效的十进制数为: +123 123 -123 +123.0000 +123,123.999 .0234 +1123,233,34 +1233+ -1233_ +12.233.33 无效的十进制数为: +123 123 -123 +123.0000 +123,123.999 .0234 +1123,233,34 +1233+ -1233_ +12.233.33 是否有人可以在这方面提供帮助这适用于所有人: +123 123 -123 +123.00

我想要一个regexp来验证十进制数:

有效的十进制数为:

+123
123
-123
+123.0000
+123,123.999
.0234
+1123,233,34
+1233+
-1233_
+12.233.33
无效的十进制数为:

+123
123
-123
+123.0000
+123,123.999
.0234
+1123,233,34
+1233+
-1233_
+12.233.33
是否有人可以在这方面提供帮助

这适用于所有人:

+123
123
-123
+123.0000
+123,123.999
.0234
+1123,233,34
查看演示:

^[+\-]?(\d+(,?\d)*(\.\d*)?|\.\d+)$

这适用于所有人:

+123
123
-123
+123.0000
+123,123.999
.0234
+1123,233,34
查看演示:

^[+\-]?(\d+(,?\d)*(\.\d*)?|\.\d+)$

这样更好:

^[+\-]?\d+(,\d{3})*(\.\d*)?$
加号或减号(可选),后跟任意数量的数字,后跟任意数量的
,123
节,后跟一个小数点和更多的数字,这将处理除带前导小数点的数字以外的任何内容

^[+\-]?(\d+(,\d{3})*(\.\d*)?|\.\d+)$
添加另一个选项可以使用前导小数,后面必须跟数字。

这样更好:

^[+\-]?\d+(,\d{3})*(\.\d*)?$
加号或减号(可选),后跟任意数量的数字,后跟任意数量的
,123
节,后跟一个小数点和更多的数字,这将处理除带前导小数点的数字以外的任何内容

^[+\-]?(\d+(,\d{3})*(\.\d*)?|\.\d+)$
添加另一个选项可以使用前导小数,后面必须跟数字。

您可以使用此选项

^([-+] ?)?[0-9]+(,[0-9]+)?$
你可以用这个

^([-+] ?)?[0-9]+(,[0-9]+)?$

取决于您对正则表达式的支持

^([-+])?(\d+)?(\.\d+)?$
可选+或-,数字,可选',后跟更多数字。
也将很遗憾地匹配空字符串。

取决于您对正则表达式的支持

^([-+])?(\d+)?(\.\d+)?$
可选+或-,数字,可选',后跟更多数字。
不幸的是,也将匹配空字符串。

我认为这是您可以得到的最简单的:

^[+-]?\d*\.?\d+$

小数点后始终需要数字。利用这一事实简化了问题

更新:起初我没有注意到您还需要处理逗号。下面是一个简单的版本,它允许在小数点的左边加逗号。每个逗号前后必须至少有一个数字,但除此之外,没有强制执行任何规则(这似乎是示例数据的要点)。实际上,它需要在最后一个逗号后加两位数字


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

我认为这是你能得到的最简单的方法:

^[+-]?\d*\.?\d+$

小数点后始终需要数字。利用这一事实简化了问题

更新:起初我没有注意到您还需要处理逗号。下面是一个简单的版本,它允许在小数点的左边加逗号。每个逗号前后必须至少有一个数字,但除此之外,没有强制执行任何规则(这似乎是示例数据的要点)。实际上,它需要在最后一个逗号后加两位数字


^[+-]?(\d+(,\d)?*\。?\d+$

否:在字符类中,您不需要转义
+
,在所有问号之后的随机
+
都是无意义的,
[\.]
是不必要的,之后的
{1}
更不必要,为什么您只允许小数点后两位?为什么在比赛结束时会有加号呢?不,这个编辑又错了。您允许使用多个小数点。现在一切都已修复。@DAN1111否:您不需要在字符类中转义
+
,随机
+
在您所有的问号都没有意义之后,
[\.]
是不必要的,
{1}
之后就更不必要了,为什么小数点后最多只能有两位数?为什么在比赛结束时会有加号呢?不,这个编辑又错了。您允许使用多个小数点。现在一切都已修复。@dan1111很容易修复,将
{3}
更改为
+
。很容易修复,将
{3}
更改为
+
。请注意,这些是严格的十进制数(除了第7个,您的意思是+1123233.34吗?),它们在欧洲并不都合适。欧洲国家经常使用,表示小数点,和。对于分隔符,例如+123.123999i,我知道这是一个正则表达式问题,但许多语言都有解析例程,这些例程也支持语言环境,您是否考虑过使用其中的一种?例如,在.NET中,Int64.TryParse(…)请注意,这些是严格的美式十进制数(除了第7位,您的意思是+1123233.34?),它们在欧洲并不都适用。欧洲国家经常使用,表示小数点,和。对于分隔符,例如+123.123999i,我知道这是一个正则表达式问题,但许多语言都有解析例程,这些例程也支持语言环境,您是否考虑过使用其中的一种?例如,在.NET中,Int64.TryParse(…)