Denis: Eingabefelder auf Zahlen prüfen

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?

  1. 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

    --
    #*~!:     Endlich Ferien.
    Selfcode: ie:% fl:| br:^ va:| ls:# fo:) rl:? n4:| ss:{ de:] js:) ch:? sh:( mo:? zu:|
    Infos:    http://emmanuel.dammerer.at/selfcode.html
  2. /*

    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

    --
    sh:| fo:) ch:? rl:| br:& n3:} n4:# ie:| mo:{ va:| de:[ zu:] fl:) ss:) ls:& js:)
    */