Was ist der kürzeste Regex, der Gleitkommazahlen ungleich Null mit einer beliebigen Anzahl von Dezimalstellen erreichen kann?

8

Was ist der kürzeste Regex, der Gleitkommazahlen ungleich Null mit einer beliebigen Anzahl von Dezimalstellen abgleichen kann?

Es sollte Zahlen wie

akzeptieren %Vor%

aber Konstruktionen wie

ablehnen %Vor%

Ich brauche keine Unterstützung für die wissenschaftliche Notation, mit e, E und so.
Die Sprache, die ich benutze, ist übrigens C #.

    
luvieere 02.12.2009, 08:25
quelle

4 Antworten

6
%Vor%

BEARBEITEN Aktualisiert, um neue Anforderungen zu berücksichtigen (letzte Dezimalstellen können null sein)

%Vor%

(kürzer als mit Lookahead: ^-?(0\.(?=[1-9])\d*|[1-9]\d*(\.\d+)?)$ .)

EDIT2 Wenn z.B. 001.000 kann übergeben werden

%Vor%     
jensgram 02.12.2009, 08:33
quelle
0

Dies ist die eine, die ich immer benutze:

(\+|-)?([0-9]+\.?[0-9]*|\.[0-9]+)([eE](\+|-)?[0-9]+)?

In einem PHP-Beispiel verwendet:

%Vor%

Ausgabe:

%Vor%     
leepowers 02.12.2009 08:32
quelle
0
%Vor%

Hinweis: Denken Sie daran, ^ $ zu setzen, wenn Ihr Regexp-Matcher dies nicht tut.

Darf ich fragen, warum der "Kürzeste"? Ein Pre-Compiler RegExp oder das gleiche mit nicht übereinstimmenden Gruppen könnte schneller sein. Auch ein Test für Null könnte möglicherweise auch schneller sein.

    
Wernight 02.12.2009 08:53
quelle
0
tchrist 23.11.2010 15:00
quelle

Tags und Links