Wie kann ^\d+$
verbessert werden, um nicht zuzulassen 0
?
BEARBEITEN (konkreter machen):
Zuzulassende Beispiele:
1
30
111
Nicht zuzulassende Beispiele:
0
00
-22
Es spielt keine Rolle, ob positive Zahlen mit einer führenden Null zulässig sind oder nicht (z 022
. B. ).
Dies ist für die Implementierung von Java JDK Regex vorgesehen.
076
?Antworten:
Versuche dies:
... und etwas Polsterung, um das SO-Antwortlimit von 30 Zeichen zu überschreiten :-).
Hier ist Demo
quelle
^[1-9]+$
funktionieren?^[1-9]+$
würde nicht erlauben 10^[1-9]+$
würde nicht zulassen10
. @ Mulmoth wird der Vorschlag erlauben1
, da\d*
Übereinstimmungen null oder mehrmals. Dies wird jedoch nicht zugelassen076
, da dies nicht mit a beginnt[1-9]
.01
?Es
076
tut mir leid, dass ich zu spät komme, aber das OP möchte es zulassen , möchte es aber wahrscheinlich NICHT zulassen0000000000
.In diesem Fall möchten wir also eine Zeichenfolge mit einer oder mehreren Ziffern, die mindestens eine Nicht-Null enthält . Das ist
quelle
^[0-9]*[1-9][0-9]*(\.[0-9]+)$
Aber das ist eine Annahme darüber, was Sie mit "dezimal" meinen. Benötigen Sie Exponententeile? Das ist ziemlich kompliziert, also stellen Sie eine andere Frage.^0*[1-9]\d*$
da das erste[0-9]*
nur aktiv ist, bis[1-9]
das erste Nicht-Null-Element gefunden wird, dh es ist nur aktiv, bis es anfängliche Nullen gibt (0*
).Sie könnten eine negative Lookahead-Behauptung versuchen:
quelle
Versuchen Sie dieses, dieses funktioniert am besten, um die Anforderung zu genügen.
Hier ist die Beispielausgabe
quelle
[1-9]\d*
.^\d*[1-9]\d*$
Dies kann alle positiven Werte einschließen, auch wenn sie vorne mit Null aufgefüllt sind
Erlaubt
1
01
10
11 etc.
nicht zulassen
0
00
000 etc ..
quelle
Beliebige positive Ganzzahl, ausgenommen 0:
^\+?[1-9]\d*$
Beliebige positive Ganzzahl, einschließlich 0:
^(0|\+?[1-9]\d*)$
quelle
Habe diesen:
Jemand schlägt es? :) :)
quelle
00
willst du das? Und es wird erlauben1aaaaa
undabcd01
.^
gehört nur zur ersten Alternative und$
nur zur zweiten, um diese Klammern zu lösen^([1-9]|[0-9]{2,})$
000000000
. Sie haben eine ganze Zahl ohne Null gesagt .Vielleicht möchten Sie dies (bearbeiten: Nummer des Formulars zulassen
0123
):Wenn ich es wäre, würde ich es stattdessen tun
quelle
Integer.parseInt()
selbst fügt sehr wenig Overhead hinzu. Das Werfen und Fangen von Ausnahmen ist teuer.\\+?
Präfixen los? Ich vermute, dass dies ein Pluszeichen sein soll, wie es im Java-Quellcode erscheinen würde, aber warum? Wenn Minuszeichen nicht erlaubt sind, kann man davon ausgehen, dass auch Pluszeichen aus sind.Nur zum Spaß, eine andere Alternative mit Lookaheads:
So viele Ziffern wie Sie möchten, aber mindestens eine muss sein
[1-9]
.quelle
Diese RegEx stimmt mit jeder positiven Ganzzahl von 0 überein:
Es funktioniert mit zwei negativen Lookbehinds, die vor einer Zahl nach einem Minus suchen, was darauf hinweist, dass es sich um eine negative Zahl handelt. Es funktioniert auch für jede negative Zahl größer als -9 (z. B. -22).
quelle
Mein Muster ist kompliziert, aber es deckt genau "Jede positive ganze Zahl außer 0" ab (1 - 2147483647, nicht lang). Es ist für Dezimalzahlen und erlaubt keine führenden Nullen.
quelle
^ [1-9] * $ ist das einfachste, was ich mir vorstellen kann
quelle
10
und überein29303
. Es wird auch mit einer leeren Zeichenfolge übereinstimmen.Dies sollte nur Dezimalstellen> 0 zulassen
quelle