2017-06-20 6 views
0

Wie kann ich ein Feld validieren, das mindestens 1,00 enthalten muss? Muss auch 2 Dezimalpunkte enthalten.Validierung einer HTML-Eingabe

ich das gefunden habe ....

<input pattern="\d?\d\.\d\d" maxlength=5 size=5 onchange="check(this)"> 
    <script> 
    function check(elem) { 
     if(!elem.value.match(/^\d?\d\.\d\d$/)) { 
     alert('Error in data – use the format dd.dd (d = digit)'); 
     } 
    } 
    </script> 

aber es hat nichts mehr als 99,99 ermöglichen.

Entschuldigung, ich muss mehr Details hinzufügen, um dies zu erklären.

Ich muss 1,00 oder 10,00 akzeptieren oder sogar 1000,00

einfach nicht

1 oder 10 oder 2,0 oder 20,0

Es braucht eine ganze Zahl und 2 Dezimalstellen

zu sein Jede Hilfe wird sehr geschätzt!

+1

Bist Du sicher die 'Eingang maxlength = 5' nicht als 99,99 höher wird verhindert, da es in der Länge bereits 5 Zeichen ist? – Poosh

+0

Ja sorry ich habe das ohne Ergebnisse erhöht – stevebrig

Antwort

2

/^[1-9]+\d*\.\d{2}$/g sollte funktionieren, wo

^[1-9] : makes sure the non-decimal part is greater than 0. 
\d* : allows trailing zeroes as in 1000 

const regex = /^[1-9]+\d*\.\d{2}$/g; 
 
const str = `1601.91`; 
 
let m; 
 

 
while ((m = regex.exec(str)) !== null) { 
 
    // This is necessary to avoid infinite loops with zero-width matches 
 
    if (m.index === regex.lastIndex) { 
 
     regex.lastIndex++; 
 
    } 
 
    
 
    // The result can be accessed through the `m`-variable. 
 
    m.forEach((match, groupIndex) => { 
 
     console.log(`Found match, group ${groupIndex}: ${match}`); 
 
    }); 
 
}

+0

'/^\ d * [123456789] + \. \ D {2} $/g' wäre hilfreich, wenn es eine 0 Stelle vor dem Dezimalpunkt gibt. – Poosh

+0

'[123456789] +' - Huh? Du erlaubst also nicht "10.00", sondern "11.00"? – nnnnnn

+0

warum '[123456789]' statt '[1-9]' –

Verwandte Themen