Che cos'è un'espressione regolare C # che convaliderà la valuta, il float o l'intero?

StackOverflow https://stackoverflow.com/questions/617826

  •  03-07-2019
  •  | 
  •  

Domanda

Qual è un'espressione regolare adatta a C # che convaliderà un numero se corrisponde al seguente?

 $1,000,000.150
 $10000000.199
 $10000 
 1,000,000.150
 100000.123
 10000

O gli equivalenti negativi?

È stato utile?

Soluzione

Puoi usare regex di csmba se ne fai una leggera modifica.

^\$?(\d{1,3},?(\d{3},?)*\d{3}(.\d{0,3})?|\d{1,3}(.\d{2})?)$

Altri suggerimenti

Penso che ssg abbia ragione. Non è un buon uso di Regex, specialmente se il tuo software deve gestire l'inserimento di dati non statunitensi.

Ad esempio, se il simbolo della valuta è l'euro, o lo yen giapponese o la sterlina britannica, una qualsiasi delle altre dozzine di simboli di valuta là fuori?

Che dire delle regole di formattazione dei numeri?

Negli Stati Uniti dovresti inserire 1.000.000,00 ma in Francia, questo dovrebbe essere 1.000.000,00 . Altri paesi consentono la spaziatura tra i raggruppamenti di cifre ...

Se si utilizza un Regex diretto senza tenere conto della Cultura, non si verificherà mai con successo a meno che non si sia sicuri al 100% che il proprio software non verrà mai utilizzato in un contesto centrico non statunitense.

^\$?(\d{1,3},?(\d{3},?)*\d{3}(\.\d{1,3})?|\d{1,3}(\.\d{2})?)$

Penso di aver riscontrato un problema con la soluzione di ssg (o forse un bug di MS!).

Eseguendo questo:

float.TryParse("0,2",NumberStyles.Currency, CultureInfo.GetCultureInfo("en-US"), out num)

Restituisce vero. Sicuramente "0,2" non è un valore di valuta valido?

Fai attenzione ai galleggianti. Alla fine colpirai un caso come 0,01 rappresentato come 0,00999999. È meglio utilizzare stringhe o numeri interi.

Prova questo. Potrebbe essere necessario un perfezionamento per consentire solo un singolo punto decimale, ma corrisponde ai casi di test. Spero che questo aiuti.

[$\d,.]+

Usa questa espressione regolare per la valuta americana \ $ (\ d) * \ d Abbina $ 300, $ 12900 Non abbinato $ 12900,00

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top