Dies ist eine ziemlich häufige Aufgabe. Der einfachste Weg, um damit umzugehen, ist dies:
%Vor%Es gibt noch weitere Komplikationen, z. B. ob Sie führende Nullen oder Kommas oder ähnliches zulassen möchten. Dies kann so kompliziert sein, wie Sie es wünschen. Wenn Sie beispielsweise das Format 1.234.567.89 zulassen möchten, können Sie Folgendes verwenden:
%Vor% Das \b
gibt es einen Wortbruch, aber ich benutze es als eine hinterhältige Art, mindestens eine Ziffer am Ende der Zeichenfolge zu verlangen. Auf diese Weise wird eine leere Zeichenfolge oder ein einzelnes +
nicht übereinstimmen.
Beachten Sie jedoch, dass Regexes nicht die ideale Methode zum Analysieren numerischer Zeichenfolgen sind. Alle modernen Programmiersprachen, die ich kenne, haben schnelle, einfache und integrierte Methoden dafür.
Niemand scheint negative Zahlen zu berücksichtigen. Einige erstellen auch eine Erfassungsgruppe, die unnötig ist. Dies ist die gründlichste Lösung IMO.
%Vor%EDIT: Warum der Downvote?
Folgendes sollte funktionieren:
%Vor% Dies verwendet ein negatives Lookahead, um sicherzustellen, dass weniger als zwei .
-Zeichen in der Zeichenfolge vorhanden sind.
Hier ist eine viel einfachere Lösung, die keine Vorausschau oder Look-Behinds verwendet:
%Vor%Um zu verstehen, warum das funktioniert, lesen Sie es von rechts nach links:
7
funktioniert
77
funktioniert
.77
funktioniert
0.77
funktioniert
0.
funktioniert nicht
.77
funktioniert
77
funktioniert
..77
funktioniert nicht
.77
funktioniert
0.77
funktioniert
0077.77
funktioniert
0077
funktioniert Die Verwendung von Look-ahead- und Look-Behind-Funktionen hat den zusätzlichen Vorteil, dass Sie sich keine Gedanken über regEx-basierte DOS-Angriffe machen müssen.
HTH
Tags und Links regex