Das Muster wäre vereinfacht werden:
Diese
^\$\d{0,6}(\.\d{0,2})?$
nicht überprüfen, ob es irgendwelche Ziffern sind so „$.“ ist eine gültige Übereinstimmung und ein gültiges Ergebnis bei den ursprünglichen Anforderungen des Fragestellers.
zu erklären:
^
Mittel passen nur, wenn es nicht vor der Zeichenfolge, die ich suche, das heißt „USD $ 123.45“ würde als $ in diesem Beispiel nicht (in Verbindung mit den \$
) nicht unmittelbar nach dem Anfang der Zeichenfolge.
\$
stimmt mit dem $ -Zeichen überein, die Verwendung des Backslash() heißt Escaping und wird verwendet, um reservierte Zeichen (die etwas im Kontext des regulären Ausdrucks bedeuten) in diesem Fall $ zuordnen zu können Ende der Schnur, das heißt es gibt keine Zeichen nach diesem Punkt
\d
wird jede Dezimalzeichen übereinstimmen, dh 0-9
{n,m}
wird von n auf m Instanzen des vorhergehenden Elements übereinstimmt, wenn n 0 ist, dann Es bedeutet effektiv, dass das Match optional ist.
\.
wird mit dem Dezimalpunkt übereinstimmen, es ist als escaped as. ist ein reserviertes Zeichen im regulären Ausdruck, der mit einem beliebigen Zeichen übereinstimmt
(...)
bringt den regulären Ausdruck, der darin enthalten ist, als Gruppe zusammen, es gibt andere Konsequenzen, aber ich überlasse das Ihnen zu erforschen.In diesem Fall ist es nur für das nächste Zeichen im regulären Ausdruck vorhanden
?
entspricht 0 oder 1 des vorhergehenden Elements (in diesem Fall die Gruppe, die nach einem Dezimalpunkt und bis zu 2 Dezimalzeichen sucht, also erwarten wir, dass es keine Dezimalstelle mit nachfolgenden Zeichen (0 Auftreten) oder einen Dezimalpunkt mit bis zu 2 Dezimalzeichen (1 Auftreten) gibt)
$
passt das Ende der Zeichenfolge, es kann keine Zeichen in der String nach diesem Punkt.
Ich denke, es gibt Regex Shortcuts/Aliase für Dezimalstellen, so dass alle diese Vorschläge, die [0-9] enthalten, möglicherweise durch diese ersetzt werden. –
Es ist wahr und auf jeden Fall erwähnenswert. Ich verwende immer gerne expliziter, wenn die lange Form nicht viel mehr als die Abkürzungen ist. Für Dinge wie Leerzeichen ist es lästig, sie vollständig auszugeben, für alphanumerische Typen bedeutet das, dass sie für Leute, die weniger an Regex gewöhnt sind (und daher die Zeichenklassen-Shortcuts), auf einen Blick besser lesbar sind. – Chris
Keine negativen Dollarbeträge, z. B. Rückerstattungen? –