2017-09-28 3 views
-2

型付き値が予想されるかどうかをチェックするフィルタを作成したいとします。
許可されているのは、負で正の値( '+' sugnなし)です。また、否定記号自体も許可されます。
問題は負数の検索を行うことができますが、マイナスも見つけるために条件を追加する方法がわかりません。
私は先読みとこのメカニズム全体を使用しようとしましたが、失敗しました。
OK: - 、-10、-54、66、0、1
NOK:+、1、-010、010正または負の整数が0またはマイナスの前にない

+1

あなたが試した正規表現を私たちに教えてください。 – CinCout

+0

また、なぜ '-'だけでOKですか?意味がありません。 – CinCout

+0

@CinCoutなぜなら、負の数値を入力したいのであれば、 " - "から始める必要があり、 "一段階"の比較をしたいからです。動作しない正規表現を表示する点は何ですか? – rainbow

答えて

2

何それについて:

^(?:(?:-?(?:[1-9]\d*)?)|0)$ 

Regex 101 Demo

説明:以下

^ start marker 
- literally matches - sign 
? makes it optional 
([1-9]\d*) start by non zero digit followed by optional digits 
([1-9]\d*)? the question sign makes it optional 
|0 means or a single zero 
$ end marker 
+1

単一の0は一致しません。 – Wli

+1

@Wliすごい偉大なキャッチ...間違いなく急いでmisseed!ありがとう –

+1

はい、それです。私がこれを見ると、この正規表現は私のスキルをはるかに超えていると思います。 – rainbow

0

正しい作業正規表現です:

^-?(?:[1-9]\d*|0)?$ 

それは

0

使用このすべてのテストケースをカバーします: ^-?(?:(?:[1-9]\d*|0))?$

Demo

オプション-でスタート、その後、最初の数字は、残りの部分と0以外のものであることを確認してくださいできるだけ多くの桁である。 0の専用ケースも処理します。

関連する問題