2017-08-09 20 views
2

私は^-\d*\.?\d+$を負の数のマッチングに使用しています。しかし、これは-0を受け入れます。 -0と一致する正規表現を制限したいと思います。助けてもらえますか? ありがとうございます。あなたが使用すること非ゼロの負の10進数の正規表現

+0

数値が-0.234の場合、つまり数字はゼロから始まり、ゼロではありません。この番号を取得したくないですか? –

+0

その番号が一致するようにします。私は-0、-0.000、-00000000などのようなマッチを望んでいません。ゼロであるものは一致してはいけません。 – user3534857

答えて

4

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

は、文字列のみ-が含まれている場合(?!0*\.?0+$)否定先読みはマッチを失敗し、intは/ゼロを表す番号のように浮かぶregex demo

を参照してください。

詳細

  • ^ - 文字列
  • -の開始 - ハイフン
  • (?!0*\.?0+$) - 以下のパターンが一致した場合、現在位置の後、試合に失敗:
    • 0* - ゼロ以上0 s
    • \.?から0+
    • .オプション - 1以上 0 S
    • $ - ストリング
  • の端
  • \d* - 0+数字
  • \.?から
  • .任意
  • \d+ - 1桁以上
  • $ - 文字列の最後。
+0

ありがとうございます。その完璧に動作します。 – user3534857

2

多分、Regexは正しいツールではありません。

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. 
関連する問題