Regex eine Dezimalzahl mit Komma

Bin ich wogenden Probleme bei der Suche nach den richtigen regex für dezimal-zahlen, die zählen die Komma-Trennzeichen.

Ich habe ein paar andere Fragen zu diesem Problem im Allgemeinen, aber keine der Antworten wirklich funktionierte, wenn ich diese getestet

Die besten, die ich habe, so weit ist:

[0-9]{1,3}(,([0-9]{3}))*(.[0-9]+)?

2 Haupt-Probleme bisher:

1) zeichnet Es die zahlen mit Leerzeichen zwischen Ihnen "3001 1" stattdessen splitten auf 2 Spiele "3001" "1" - sehe ich nicht wirklich wo ich erlaubt Leerzeichen in der regex.

2) ich habe ein generelles problem mit dem Anfang\Ende des regex.

Regex übereinstimmen sollten:

3,001
1
32,012,111.2131 

Aber nicht:

32,012,11.2131
1132,012,111.2131
32,0112,111.2131
32131

Außerdem würde ich gerne es entsprechen:

1.(without any number after it)
1,(without any number after it)
as 1

(ein Komma oder ein Punkt am Ende der Nummer sollte übersehen werden).

Vielen Dank!
.

Für starter, es sei denn Ihre Sprache ist die regex-Bibliothek, die bereits so tut, sollten Sie wahrscheinlich verankern Sie Ihr Muster an beiden enden. Ansonsten, jeder string mit mindestens einer Ziffer gesucht werden.
Sie erlaubt Leerzeichen in der regex mit der Zeit (.), das entspricht einem beliebigen Zeichen. Die Flucht der Zeit (\.) nur match der Zeit ist nur.
Ich glaube nicht, dass die zweite und Dritte Probleme sind Probleme. Was ich sagen kann, dass Sie nicht mit dem übereinstimmen, was Sie nicht soll.
OP müssen wir wissen, welche regex-engine, die Sie verwenden... nur kann ich dies absolut die Arbeit, die für alle Fälle (einschließlich der zahlen, getrennt durch nur ein Leerzeichen), wenn beide lookbehinds und lookaheads sind verfügbar.
Ich bin mit regex in c#.

InformationsquelleAutor LiranBo | 2013-11-22

Schreibe einen Kommentar