Si potrebbe usare un espressione regolare:
var regex = /^\d+(?:\.\d{0,2})$/;
var numStr = "123.20";
if (regex.test(numStr))
alert("Number is valid");
Se non sei cercando di essere il più severo con le cifre decimali che si potrebbe trovare più facile usare l'unario (+
) all'operatore di lanciare ad un numero di check it di validità:
var numStr = "123.20";
var numNum = +numStr; // gives 123.20
Se la stringa numero non è valido, esso tornerà NaN
(Not un numero), qualcosa che si può verificare facilmente:
var numStr = "ab123c";
var numNum = +numStr;
if (isNaN(numNum))
alert("numNum is not a number");
Sarà, naturalmente, consentire a un utente di aggiungere più cifre decimali, ma si può tagliare qualsiasi supplementare fuori usando number.toFixed(2)
per arrotondare a 2 cifre decimali. parseFloat
è molto meno rigido con l'input e colpirà il primo numero che può trovare da una stringa, purché quella stringa inizi con un numero, ad es. parseFloat("123abc")
darebbe 123
.
fonte
2010-02-09 07:33:35
è la parte dopo il punto decimale facoltativo? è '103.5' valido, o dovrebbe essere' 103.50'? – Amarghosh
parte dopo decimale è facoltativo. – dev646