2017-09-28 4 views
-2

Ich möchte einen Filter erstellen, der prüft, ob ein typisierter Wert erwartet wird.
Erlaubt sind negative und positive (ohne '+' sugn) Zahlen, die nicht vor Null liegen. Auch ein negatives Vorzeichen ist erlaubt.
Problem ist, ich kann Suche der negativen Zahl tun, aber ich kann nicht Bedingung hinzufügen, um auch minus zu finden.
Ich habe versucht, Lookaheads und ganzen Mechanismus zu verwenden, aber ich habe versagt.
OK: -, -10, -54, 66, 0, 1
NOK: +, +1, -010, 010Regex, positiver oder negativer Int nicht vorangestellt von 0 oder minus

+1

Zeigen Sie uns die Regex (e), die Sie ausprobiert haben. – CinCout

+0

Auch, warum ist nur '-' OK? Macht keinen Sinn. – CinCout

+0

@CinCout, denn wenn ich eine negative Zahl eingeben möchte, muss ich von "-" ausgehen und ich möchte einen "einstufigen" Vergleich haben. Was ist der Zweck, nicht funktionierende Regexp zu zeigen? – rainbow

Antwort

2

Was ist das:

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

Regex 101 Demo

Erläuterung:

^ 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

eine einzige 0 stimmt jedoch nicht überein. – Wli

+1

@Wli wow great catch ... auf jeden Fall misseed wegen der Eile! Danke –

+1

Ja, das ist es. Wenn ich mir das anschaue, denke ich, dass diese Regexp weit über meine Fähigkeiten hinausgeht. – rainbow

0

Unten ist die richtige Arbeits regex:

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

Es deckt alle Testfälle

0

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

Demo

Beginnen Sie mit einem optionalen -, dann stellen Sie sicher, dass die erste Ziffer ist alles andere als 0 mit dem Rest so viele Ziffern wie möglich. Behandeln Sie auch nur den Sonderfall 0.

Verwandte Themen