Desidero solo l'input utente 0-9 e solo una volta "."Espressione PHP - numero float valido
patt = /[^0-9(.{1})]/
1.2222 -> true
1.2.2 -> false (only once '.')
aiutami, grazie!
Desidero solo l'input utente 0-9 e solo una volta "."Espressione PHP - numero float valido
patt = /[^0-9(.{1})]/
1.2222 -> true
1.2.2 -> false (only once '.')
aiutami, grazie!
È possibile utilizzare is_numeric()
con l'avvertenza che accetta un po 'più di una normalmente desiderata (ad esempio 1e4
).
Perché non usare solo is_numeric
se non si ha esperienza con le espressioni regolari.
Per quanto riguarda la vostra espressione regolare: .
corrisponde a tutti i caratteri, \.
corrisponde a un punto. {1}
non è necessario. E non ho idea di cosa stai cercando di fare con [^ ... ]
. Leggi lo regular expressions tutorial se vuoi davvero usare espressioni regolari da qualche parte nel tuo codice.
Perché non utilizzare http://php.net/manual/en/function.is-float.php? Ma comunque, il RegEx sarebbe ^[\d]+(|\.[\d]+)$
divertiti!
/^-?(?:\d+|\d*\.\d+)$/
Questo corrisponde ai normali galleggianti, ad es. 3.14
, abbreviazioni solo per la parte decimale, ad es. .5
e numeri interi ad es. 9
e numeri negativi.
questo è quello che stai cercando per
$re = "~ #delimiter
^ # start of input
-? # minus, optional
[0-9]+ # at least one digit
( # begin group
\. # a dot
[0-9]+ # at least one digit
) # end of group
? # group is optional
$ # end of input
~xD";
questo accetta solo "123" o "123.456", non" .123" o "14e + 15". Se ti occorrono anche questi moduli, prova is_numeric
+1 per commenti graduali – alex
A cosa serve la D? – AntonioCS
@AntonioCS è per $ fine delimitatore [ref sui modificatori PCRE] (http://php.net/manual/en/reference.pcre.pattern.modifiers.php) 'D (PCRE_DOLLAR_ENDONLY) Se questo modificatore è impostato, un metacarattere del dollaro nel modello corrisponde solo alla fine della stringa del soggetto. Senza questo modificatore, un dollaro si trova immediatamente prima del carattere finale se si tratta di una nuova riga (ma non prima di ogni altra nuova riga).Questo modificatore viene ignorato se è impostato il modificatore m. Non esiste un equivalente a questo modificatore in Perl. FYI: x è per esteso: per sopprimere eventuali caratteri di spazi bianchi – MediaVince
Le espressioni regolari servono per la corrispondenza dei motivi di stringa. Se non si è in modo esplicito dopo la convalida formato della stringa di input (ma il valore effettivo), è anche possibile utilizzare
filter_var("1.33", FILTER_VALIDATE_FLOAT);
per assicurarsi l'ingresso può essere utilizzato come un valore float. Ciò restituirà FALSE
se non è un float e il valore float o intero altrimenti. Si applicano le regole type juggling.
Questa espressione regolare:
\d*(?:\.\d+)?
darà risultati:
123 -> true
123.345 -> true
123. -> true
.345 -> true
0.3345 -> true
Tuttavia, è necessario verificare il vuoto dell'ingresso prima di usarlo, perché l'espressione regolare permesso anche lunghezza zero ingresso.
È necessario racchiudere l'alternanza tra parentesi, altrimenti l'ancoraggio iniziale della stringa verrà applicato solo con numeri interi e l'ancoraggio di fine stringa solo con i decimali. –
Buona cattura, riparato. –
Funziona anche per me per INT. Grazie. – Strabek