# regex in if-abfrage



## strobi80 (21. Feb 2016)

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 (21. Feb 2016)

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.


----------



## strobi80 (21. Feb 2016)

wäre schön gewesen... funktioniert aber leider immer noch nicht... trotzdem schonmal danke für den hinweis


----------



## Tobse (21. Feb 2016)

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


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


----------



## strobi80 (21. Feb 2016)

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


```
$("#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 (21. Feb 2016)

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)


----------

