我一直在尝试制作一个接受
的reg exp0.27878
0,8989
2.98889
但不能仅以0
开头,例如088989383
。
我使用了^(?:\d+|\d{1,3}(?:,\d{3})+)(?:(\.|,)\d+)?$
。
任何解决方案..谢谢
答案 0 :(得分:0)
您可以使用
^(?!0+[1-9])(?:\d+|\d{1,3}(?:,\d{3})+)(?:[.,]\d+)?$
请参阅regex demo。 {1}}否定前瞻将使所有字符串失败,以1个或多个零开头,后跟(?!0+[1-9])
以外的数字。
如果您想使0
个数字失败,请将前瞻替换为00.825
:
(?!0\d)
模式详情
^(?!0\d)(?:\d+|\d{1,3}(?:,\d{3})+)(?:[.,]\d+)?$
- 字符串开头^
- 如果一个数字以一个数字开头,那么以1个或多个零开头的字符串后跟一个非(?!0+[1-9])
(或0
以外的数字的字符串将会失败。 (?!0\d)
后跟任何数字)0
- 两种选择:
(?:\d+|\d{1,3}(?:,\d{3})+)
- 一位或多位\d+
- 或|
- 1至3位数字\d{1,3}
- 连续发生一次或多次(?:,\d{3})+
,然后是3位数,
- (?:[.,]\d+)?
或.
的可选序列,然后是1位或更多位数,
- 字符串结束。