2017-10-12 239 views
1

我一直試圖做一個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

您可以使用

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