espressione regolare con numeri

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
ohplà, sentivate la mia mancanza?

ho un piccolo problemino con le espressioni regolari.
l'utente inserisce un prezzo in euro e può scrivere per es.

(1) 100000
(2) 100000.00 (con il punto decimale all'americana)
(3) 100000,00 (con la virgola decimale)
(4) 100.000,00 (con punti migliaia e virgola decimale)

io voglio che comunque il numero sia sempre del tipo 100.000,00 - es (4)

ho risolto per gli esempi 1, 2 e 3
verificando in questa maniera e in funzione riporto il numero a come voglio io

$numN=eregi("^([0-9]{1,9})$",$daver); //verifica che solo numeri senza punto o virgola decimale
$numP=eregi("^([0-9]{1,9})\.([0-9]{0,2})$",$daver); //verifica che solo numeri con . decimale e nessun o 2 decimali
$numV=eregi("^([0-9]{1,9}),([0-9]{0,2})$",$daver); //verifica che solo numeri con , decimale e nessun o 2 decimali
.............

.............
return number_format($daver,2,",",".");
(per inserimento di solo 0 o vuoto return "no prezzo" - in tutti gli altri casi return errore di inserimento)

mi sto incasinando con l'esempio (4) per verificare ed in questo caso non fare alcuna modifica al numero

$numPV= eregi( espressione_regolare, $daver);

secondo voi è giusta la seguente?

espressione_regolare = ("^([0-9]{0,3})+(\.){0,1}+([0-9]{0,3})+(\.){0,1}+([0-9]{1,3})+(,){0,1}+([0-9]{0,2})$")

grazie e ciao a tutti
 
C'è un'espressione regolare apposita per i segni di interpunzione:
PHP:
[.,!?:...]
 
quindi scrivendo

[.]{0,3}[,]{0,1}
dovrei risolvere... però "mentre l'intelligenza ha i suoi limiti...l'ignoranza no" uno potrebbe cercare di introdurre

1000...,0 e qusto viene accettato

intanto grazie e saluti
 

Discussioni simili