正则表达式不能从0开始,但可以为0或0开始,

问题描述:

我一直试图做一个reg EXP接受正则表达式不能从0开始,但可以为0或0开始,

0.27878 
0,8989 
2.98889 

但绝不能只用0088989383开始。我使用^(?:\d+|\d{1,3}(?:,\d{3})+)(?:(\.|,)\d+)?$

任何解决方案..感谢

+0

是允许的是 2.3903093和 29034,0.33323,0333 不允许:2,078778 – Gang13

+0

用['^(?0 + [1-9])(?:\ d + | \ d {1,3}:+)(:(\ |,?)\ d +)$'](https://regex101.com/r/lMB2R1/2)(\ d {3}?)?。 '(?!0+ [1-9])'负向前视将会失败所有以1或更多零开始并且跟着非0数字的字符串。 –

+0

@wiktorStribizew ..感谢您的解决方案。现在正在工作 – Gang13

您可以使用

^(?!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+)?$ 

pattern variation demo

图案的详细资料

  • ^ - 串
  • 开始
  • (?!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