Nico R.: Verständnisfrage zu Regex in JS und HTML

Beitrag lesen

Hallo allerseits,

um Regex habe ich mich immer gedrückt, jetzt brauche ich aber doch mal einen. Ich habe diesen hier gefunden, der in meinem Formular dafür sorgt, dass nur Beträge mit bis zu drei Ziffern, Punkt oder Komma und drei Nachkommastellen eingegeben werden dürfen:

<input type="text" pattern="[0-9]{0,3}[.|,]{0,}[0-9]{1,2}" title="Bitte nur Ziffern sowie , oder . angeben" >

Das funktioniert genau wie es soll. Wenn ich den gleichen Ausdruck allerdings in JS anwende, weicht das Verhalten ab...

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
let text = "b1";
let pattern = /([0-9]{0,3}[.|,]{0,}[0-9]{1,2})/;
let result = pattern.test(text);

document.getElementById("demo").textContent = result;
</script>

</body>
</html>  

Hier führt eine Eingabe von "b1" richtigerweise zu einem FALSE, die Eingabe von "1b" allerdings zu einem TRUE. Anscheinend wird hier, sobald einmal ein TRUE gesetzt wurde, entweder nicht weiter geprüft oder das TRUE nicht von FALSE überschrieben, das habe ich noch nicht heraus bekommen. Ich bräuchte im Prinzip eine Suche, die nur dann TRUE ergibt, wenn der komplette String plausibel ist, und nicht nur ein Teil.

Wieso funktioniert das als input-Attribut, aber nicht als JS-Funktion? Vielleicht kann mir ja jemand auf die Sprünge helfen.

Schöne Grüße

Nico