Espressione regolare di valuta PHP
Domanda
Sto cercando di trovare un pezzo di regex per abbinare un valore in valuta.
Vorrei abbinare solo numeri e 1 punto decimale, ad esempio
ammessi
- 10
- 100
- 100.00
Non consentito
- Personaggi alfa
- 100,00
- +/- 100
Ho cercato e provato un bel po 'senza fortuna.
Spero che tu possa consigliarti
Soluzione
if (preg_match('/^[0-9]+(?:\.[0-9]+)?$/', $subject))
{
# Successful match
}
else
{
# Match attempt failed
}
Nota a margine : se vuoi limitare il numero di decimali che desideri, puoi fare qualcosa del genere:
/^[0-9]+(?:\.[0-9]{1,3})?$/im
100.000
corrisponderà, mentre
100.0001
solito.
Se hai bisogno di ulteriore aiuto, pubblica un commento.
PS Se puoi, usa il formattatore dei numeri pubblicato sopra. Le funzioni native sono sempre migliori (e più veloci), altrimenti questa soluzione ti servirà bene.
Altri suggerimenti
Che ne dici di questo
if (preg_match('/^\d+(\.\d{2})?$/', $subject))
{
// correct currency format
} else {
//invalid currency format
}
Potresti prendere in considerazione altre alternative all'utilizzo di una regex.
Ad esempio, c'è il NumberFormatter
classe, che fornisce il numero e la valuta flessibili analisi e formattazione , con supporto integrato per l'internazionalizzazione.
È integrato in PHP 5.3 e versioni successive ed è disponibile come estensione nelle versioni precedenti di PHP 5.
Prova questa espressione regolare:
^(?:[1-9]\d+|\d)(?:\.\d\d)?$