regex in if-abfrage

strobi80

Mitglied
hi community,

vielleicht kann mir jmnd bei folgendem vieeeel zu banalen problem helfen:
Ein Inputfeld (jahr_gelaufen), in das nur Zahlen eingegeben werden dürfen, soll auf dessen Ihnalt überprüft werden. Wenn was andres als Zahlen eingegeben wird, wird in der darunterstehenden Div Box (exc_jahr) ein Hinweis ausgegeben.

<code>
$("#jahr_gelaufen").keyup(function()
{
var eingabe = $(this).val();
if (eingabe !== "[0123456789]") {
$("#exc_jahr").html("<p><font color=red>Hier dürfen nur Ziffern von 0-9 eingegeben werden.<br>");
}
});
</code>


Komischerweise kommt der Hinweis immer, egal was man eingibt. Hab ich den regex nicht richtig verwendet, oder fehlt hier vllt noch was?
danke schonmal für die Hilfe
 

Tarrew

Top Contributor
Das sieht nach Javascript aus und das wiederum hat nichts mit Java zu tun ;)

Ich würde es mal so probieren:
if (eingabe !== "[0123456789]+"){
//...
}

das '+' damit mindestens eine Zahl und beliebig viele Zahlen eingegeben werden dürfen. Vermute mal das Regex in JS da ähnlich läuft wie in Java.
 

Tobse

Top Contributor
JavaScript unterstützt Regex als Datentypen wie Strings und Integers. Daher kannst du einfach schreiben:

Javascript:
if (/^\d+$/.test(eingabe))
{ /* ... */ }
 

strobi80

Mitglied
jetzt wirds witzig:
wenn ichs genauso durchlaufen lassse wie untenstehend, wird die divbox richtig angezeigt... obwohl eigentlich beim eintragen einer ziffer laut code kein hinweis kommen soll

@Tobse: was spricht das .test an? steht zwar drin und läuft, ich weiß aber nicht, auf was sich das bezieht...

Java:
$("#jahr_gelaufen").keyup(function()
            {
            var eingabe2 = $(this).val();
           
            if (/[0-9]/.test(eingabe2))
            { $("#exc_jahr").html(""); }
            else
            { $("#exc_jahr").html("<p><font color=red>Es dürfen nur Ziffern von 0-9 eingegeben werden.<br>"); }
           
                   
           
            }
            );
 

Tobse

Top Contributor
Siehe Regex#test(String).

Soweit ich das beurteilen kann, funktioniert das so: https://jsfiddle.net/erpapa9j/

P.S.: Ein paar Anmerkungen zu deinem Code:

1. Deine Regular-Expression ist falsch. /[0-9]/ matched, wenn mindestens eine Ziffer in der Eingabe vorhanden ist. Dein Input heist Jahr, weshalb ich stark davon ausgehe, dass dort ausschließlich Ziffern eingetragen werden sollen. Benutze deshalb /^\d{4}$/.
2. Das <p> und das <font> Tag, welches du in #exc_jahr öffnest, werden nirgends geschlossen -> invalides Markup / DOM -> unvorhersehbare Nebeneffekte
3. Das <font> Tag ist vorsintflutlich. In HTML4 war es schon deprecated, in HTML5 wird es garnicht mehr unterstützt. Nimm einen <span> und CSS. Es macht übrigens mehr Sinn, die Fehlermeldung direkt ins HTML zu schreiben und über JavaScript dann nurnoch die Sichtbarkeit an- und auszuschalten (siehe CSS visibility oder display)
 

Ähnliche Java Themen

Neue Themen


Oben