Eingabefelder auf Zahlen prüfen
Denis
- javascript
Hallo,
ich will auf Zahlen überprüfen, erlaubt sind ganze Zahlen und Dezimalzahlen mit max. 2 nachkommastellen.
bisher ging das ungefähr so:
....
if (field.value) {
var regExpZahl = /^((\d+(,\d*)?)|((\d*,)?\d+))$/
if(!regExpZahl.test(field.value))
alert("Fehler!")
...
field.value ist dabei der Wert des Formularfeldes.
Kann mir jemand dieses regExpZahl so erweitern, dass er nur max. 2 nachkommastellen erlaubt?
Hallo.
Kann mir jemand dieses regExpZahl so erweitern, dass er nur max. 2 nachkommastellen erlaubt?
Ich glaube du meinst auf Kommastellen runden:
http://de.selfhtml.org/javascript/objekte/number.htm#to_fixed
Ich hoffe ich konnte helfen, H2O
/*
gruss Denis,
ich will auf Zahlen überprüfen, erlaubt sind ganze Zahlen
und Dezimalzahlen mit max. 2 nachkommastellen.bisher ging das ungefähr so:
ungefaehr ?? regulaere ausdruecke treffen immer genau:
/^((\d+(,\d*)?)|((\d*,)?\d+))$/ auseinandergenommen:
/ suche,
^ exakt am anfang des gesamtstrings beginnend,
( und den gruppenterm in RegExp.$5 speichernd,
( und den gruppenterm in RegExp.$2 speichernd,
\d+ mindestens eine dezimalzahl,
( sowie, wiederum, diesmal in RegExp.$1, speichernd,
,\d* genau ein komma sowie eine, mehrere oder keine dezimahlzahl,
)? wobei alle bedingungen oder aber keine einzige bedingung dieser gruppe erfuellt werden muessen/darf
)
| ODER
( den gruppenterm in RegExp.$4 speichernd,
( und den term dieser gruppe in RegExp.$3 speichernd,
\d*, eine, mehrere oder keine dezimalzahl gefolgt von einem komma,
)? wobei alle bedingungen oder aber keine einzige bedingung dieser gruppe erfuellt werden muessen/darf,
\d+ gefolgt von mindestens einer dezimalzahl
)
)
$ und dabei exakt am ende des gesamtstrings aufhoerend.
/
ansetzen musst Du demzufolge nur die beiden male,
wo die nachkommastellen abgehandelt werden - das
sind zum einen \d* und zum anderen \d+ . haeufig-
keiten im auftreten von zeichen oder gruppen sind
durch entsprechende werte in nachgestellten
geschweiften klammern einstellbar - in diesem fall:
{1,2}, was soviel bedeutet wie "kommt mindestens
ein- maximal jedoch zweimal vor". zusammen mit den
anderen bedingungen der jeweiligen gruppe lauten
die anweisungen dann "wenn ein komma vorkommt, dann
muessen ihm mindestens eine maximal jedoch nur zwei
zahle(en) nachfolgen."
das ganze umgeschrieben fuer dezimalzahlen
mit maximal zwei nachkommastellen und mit
dezimalpunkt statt komma:
*/
var x, regX = /^((\d+(.\d{1,2})?)|((\d*.)?\d{1,2}))$/;
x = ",123"; alert(regX.test(x)); // [false];
x = ".123"; alert(regX.test(x)); // [false];
x = ".12"; alert(regX.test(x)); // [true];
x = "1,1"; alert(regX.test(x)); // [false];
x = "1.1"; alert(regX.test(x)); // [true];
x = "112"; alert(regX.test(x)); // [true];
x = "3."; alert(regX.test(x)); // [false];
x = "."; alert(regX.test(x)); // [false];
x = "1.23.4"; alert(regX.test(x));// [false];
/*
by(t)e by(t)e - peterS. - pseliger@gmx.net