Il modello potrebbe essere:
^\$\d{0,6}(\.\d{0,2})?$
Questo non verifica che ci sono tutte le cifre in modo da "$". è una corrispondenza valida e un risultato valido dati i requisiti originali dell'interrogante.
Per spiegare:
^
significa solo corrispondere se non c'è nulla prima della stringa che sto cercando, vale a dire "USD $ 123.45" fallirebbe in questo esempio come il $ (in abbinamento al \$
) non è immediatamente dopo l'inizio della stringa.
\$
corrisponde al carattere $, l'uso del backslash() è chiamato escaping e viene utilizzato per consentire di abbinare caratteri riservati (che nel contesto dell'espressione regolare significa qualcosa) $ che significa corrispondere al fine della stringa, ovvero non ci sono caratteri dopo questo punto
\d
ogni carattere decimale, cioè 0-9
{n,m}
corrisponderanno da n per m istanze dell'elemento precedente, se n è 0, significa in effetti che la partita è facoltativa.
\.
corrisponderà al punto decimale, è scappato come. è un carattere riservato nell'espressione regolare che significa che corrisponde a qualsiasi carattere
(...)
porta l'espressione regolare contenuta all'interno insieme come un gruppo, ci sono altre conseguenze, ma lascerò che a voi di esplorare.In questo caso è puramente disponibile per il beneficio del carattere successivo nell'espressione regolare
?
corrisponderà a 0 o 1 dell'elemento precedente (in questo caso il gruppo che ricerca un punto decimale e fino a 2 caratteri decimali, quindi ci aspettiamo che non esiste un punto decimale con caratteri finali (0 occorrenze) o un punto decimale con fino a 2 caratteri decimali (1 occorrenze))
$
corrisponde alla fine della stringa, non ci possono essere caratteri nel stringa dopo questo punto.
Penso che ci siano collegamenti/alias regex per cifre decimali, quindi tutti questi suggerimenti che contengono [0-9] potrebbero essere sostituiti con quelli. –
È vero e sicuramente degno di nota. Mi piace sempre usare quelli più espliciti se la forma lunga non è molto più delle scorciatoie. Per cose come lo spazio bianco è fastidioso scriverlo per intero, per quelli alfanumerici lo trovo significa che sono più a colpo d'occhio leggibili per le persone meno abituate alla regex (e quindi alle scorciatoie di classe del personaggio). – Chris
Nessun importo in dollari negativo, ad esempio rimborsi? –