Jak napisac wyrazenie regularne dla typu float. Dozwolone wartosci np:
1
2
3
albo
1.1
1111111.11
122212321323.23
Jak napisac wyrazenie regularne dla typu float. Dozwolone wartosci np:
1
2
3
albo
1.1
1111111.11
122212321323.23
http://stackoverflow.com/questions/1830534/how-to-validate-digits-including-floats-in-javascript
EDIT:
przeczytaj też ostatni komentarz. Musisz też dodać osobny warunek na pojedynczy znak "-" i empty string. Możesz też zrobić pewnie coś takiego:
/^((-?\d+)|(-?\d*.\d+))?$/
tyle że dalej nie będzie zabezpieczenia przed floatami, które nie mieszczą się w zakresie, ani nie będzie działać na floaty w formacie: 1.57e10
a może coś takiego?
isStringFloat = function(test) { return parseFloat(test+'')==test; }
chce tylko dwie licznby po przecinku
2 miejsca po przecinku
zmienna.toFixed(2)
Napisalem cos takieg, ale sredno mi sie to podoba. musze przetestowac/
function check_prices(value)
{
//var reg = /^\d*(\.\d+)?$/;
var reg = /^\d*(\.\d{1,2})?$/;
if(reg.test(value))
{
return true;
}
else
{
return false;
}
}
Osobiście nie byłbym taki upierdliwy. Ja w swoich projektach pozwalam na zapisanie floata nawet w formie: 1 200 000f,4948
- po zdarzeniu blur
wywalam wszystko, co nie jest liczbą lub przecinkiem/kropką, zamieniam przecinek na kropkę, nadmiarowe kropki i wszystko co po prawej usuwam (jedyna "upierdliwość"), wrzucam w parseFloat, zaokrąglam do oczekiwanej dokładności.
Zamiast irytować użytkownika głupimi komunikatami - wykonuję pracę za niego. A user sobie myśli - "jaki świetnie zaprojektowany system!" ;)
A co jeśli te liczny tyczą się cen? I co jeśli ktoś wprowadzić źle liczbę i nie spojrzy na nią. Twój pomysł ją zaokręgli. User zapisze zmiany. A za dwa tygodnie przyjdzie skarga od klienta. Niby to ułamki groszy, ale jednak. Nie wiem czy z cenami chciałbym ryzykować.
test = function(str) { !!str.match(/^\d*\.?\d{1,2}$/); };
Teraz troche lepiej?
function check_prices(value)
{
var regexp = /^\d*\.?\d{1,2}$/;
return regexp.test(value);
}