Regex 严格十进制数的正则表达式
我想要一个regexp来验证十进制数: 有效的十进制数为: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
+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(…)