2014-01-18 5 views
6

ich einen regulären Ausdruck schreiben will, in derRegular Expression in JavaScript nur Zahlen mit optionalen 2 Dezimalstellen erlaubt

  1. Backspace erlaubt
  2. 0-9 Ziffern
  3. optional Bruchteil mit zwei Dezimalstellen (keine Begrenzung integraler Bestandteil, wie viele Stellen kann es sein)

zum Beispiel:

  • Zulässige Listen sind [12, 232.0, 23. (nur mit Punkt), 345.09, 78.23, 134.00, 0.21, .21, .02, .01 .12]
  • Nicht erlaubt sind [12.878, 34.343.334 , 0,0003]

Die Verwendung dieses regulären Ausdrucks wäre wie auf JavaScript-Event

<input type="text" onKeyPress="validatenumber(event);" /><br> 

Mein Code

function validatenumber(evt) { 
    var theEvent = evt || window.event; 
    var key = theEvent.keyCode || theEvent.which; 
    key = String.fromCharCode(key); 
    var regex = /^[0-9\b]+$/; // allow only numbers [0-9] 
    if(!regex.test(key)) { 
    theEvent.returnValue = false; 
    if(theEvent.preventDefault) theEvent.preventDefault(); 
    } 
} 
ist

Ich möchte nur diese Zeile mit dem neuen regulären Ausdruck ändern:

var regex = /^[0-9\b]+$/; // allow only numbers [0-9] 
+0

Was ist mit '.1' oder' 0.1' gültig ist oder nicht? –

+0

beide 0,1 und 0,1 sind erlaubt – user3132930

Antwort

4

finden Sie die endgültige Lösung mindestens

<input id="txtId" type="text" onkeyup="NumAndTwoDecimals(event , this);"></input> 

und die

function NumAndTwoDecimals(e , field) { 
    var val = field.value; 
    var re = /^([0-9]+[\.]?[0-9]?[0-9]?|[0-9]+)$/g; 
    var re1 = /^([0-9]+[\.]?[0-9]?[0-9]?|[0-9]+)/g; 
    if (re.test(val)) { 
     //do something here 

    } else { 
     val = re1.exec(val); 
     if (val) { 
      field.value = val[0]; 
     } else { 
      field.value = ""; 
     } 
    } 
} 
0

Wie über diese regex:

^\d*(?:\.\d\d)?$ 
+0

dies entspricht einer leeren Zeichenfolge – georg

+0

Testen Sie dies, aber nicht funktioniert erlauben nur Zahlen 0-9 – user3132930

+0

@ user3132930: Könnten Sie Ihren Test, der nicht funktioniert? – Toto

6

Hier ist sie:

/^\d*(?:\.\d{1,2})?$/ 

Arbeits Demo: http://jsfiddle.net/qd7BL/

+0

Sir ich werde Ihnen sehr dankbar sein, wenn Sie mir Arbeitsbeispiel mit onkeypress geben. Ich meine, wenn Benutzer drücken Sie die Taste anders als erlauben Zeichen einfach nichts tun, wenn in Textfeld – user3132930

+0

bedeuten mit Ereignis validnum (Ereignis) – user3132930

+0

Funktion gültige Nummer (evt) { var theEvent = evt || Fenster.Ereignis; var key = theEvent.keyCode || das Ereignis. Schlüssel = String.fromCharCode (Schlüssel); var regex = /^[0-9]*(?:\.\d{1,2})?$/; if (! Regex.test (key)) { theEvent.returnValue = false; if (theEvent.preventDefault) theEvent.preventDefault(); } } es funktioniert und erlauben Rücktaste und Zahlen, aber nicht Punkt (.) – user3132930

0

Dieses unter einfachen HTML-Code wird den gewünschten Wert validieren und auch + ve & -ve Zahlen von atleast 1 Stelle zusätzlich optional 2 Nachkommastellen.

JS-Code:

 function validateNum() { 

      /* 
      For mandatry input field, use variable: "patForReqdFld". 
      For optional input filed, use variable: "patForOptFld". 
      */ 

      var patForReqdFld = /^(\-)?([\d]+(?:\.\d{1,2})?)$/; 
      var patForOptFld = /^(\-)?([\d]*(?:\.\d{1,2})?)$/; 

      var value = document.getElementById('txtNum').value; 

      if(patForReqdFld.test(value)) { 
       alert('Valid Number: ' + value); 
      } else { 
       alert('Invalid Number: ' + value); 
      } 
     } 

HTML-Code:

 <label>Enter Number:&nbsp;</label> 
     <input type="text" id="txtNum" onBlur="validateNum()"/>