2017-08-09 126 views
2

我使用^-\d*\.?\d+$負數匹配。但是,這接受-0。 我想限制匹配-0的正則表達式。有人可以幫忙嗎? 在此先感謝。非零負數十進制數的正則表達式

+0

如果數字爲-0.234,即數字以零開始但非零,該怎麼辦?你不想得到這個號碼嗎? –

+0

我想要這個號碼匹配。我不想要像-0,-0.000,-00000000等任何匹配。任何零是不應該匹配。 – user3534857

回答

4

您可以使用

^-(?!0*\.?0+$)\d*\.?\d+$ 
    ^^^^^^^^^^^^ 

regex demo

(?!0*\.?0+$)負向前查找失敗的比賽,如果該字符串只包含-,然後一個int /浮點喜歡數字,表示零。

詳細

  • ^ - 串
  • 開始
  • - - 一個連字符
  • (?!0*\.?0+$) - 當前位置後,失敗,如果下面的模式匹配比賽:
    • 0* - 零個或多個0 s
    • \.? - 任選.
    • 0+ - 1以上0小號
    • $ - 串
  • 的端
  • \d* - 0+數字
  • \.? - 任選.
  • \d+ - 1位或更多位數
  • $ - 字符串結尾。
+0

謝謝。它的工作完美。 – user3534857

2

也許正則表達式不是正確的工具。

var input = "-1234"; // or whatever 

var num = +input; 
if(isNaN(num)) throw new Error("Invalid input"); 
if(num >= 0) throw new Error("Only negative numbers allowed"); 
// num is a valid negative number. Done.