正则表达式不能从0开始,但可以为0或0开始,
问题描述:
我一直试图做一个reg EXP接受正则表达式不能从0开始,但可以为0或0开始,
0.27878
0,8989
2.98889
但绝不能只用0
如088989383
开始。我使用^(?:\d+|\d{1,3}(?:,\d{3})+)(?:(\.|,)\d+)?$
。
任何解决方案..感谢
答
您可以使用
^(?!0+[1-9])(?:\d+|\d{1,3}(?:,\d{3})+)(?:[.,]\d+)?$
见regex demo。 (?!0+[1-9])
负向超前将失败所有以1或多个零开始的字符串,后跟0
以外的数字。
如果你想失败00.825
相同的编号,与(?!0\d)
代替先行:
^(?!0\d)(?:\d+|\d{1,3}(?:,\d{3})+)(?:[.,]\d+)?$
图案的详细资料
-
^
- 串 开始
-
(?!0+[1-9])
- 负前瞻失败,与1个或多个零开头的字符串所遵循与其他比0
(或(?!0\d)
将无法全部数字当一个数字以0
跟随任何数字时的情况) -
(?:\d+|\d{1,3}(?:,\d{3})+)
- 两种替代方案: 个-
\d+
- 1或多个数字 -
|
- 或 -
\d{1,3}
- 1至3位数 -
(?:,\d{3})+
- 1以上的,
连续出现,然后任何3位数字
-
-
(?:[.,]\d+)?
- 一个可选序列.
或,
然后一个或多个数字 -
$
- 字符串结尾。
+1
工作就像一个魅力..谢谢 – Gang13
是允许的是 2.3903093和 29034,0.33323,0333 不允许:2,078778 – Gang13
用['^(?0 + [1-9])(?:\ d + | \ d {1,3}:+)(:(\ |,?)\ d +)$'](https://regex101.com/r/lMB2R1/2)(\ d {3}?)?。 '(?!0+ [1-9])'负向前视将会失败所有以1或更多零开始并且跟着非0数字的字符串。 –
@wiktorStribizew ..感谢您的解决方案。现在正在工作 – Gang13