String auf numerisch und alphanumerisch überprüfen
Markus Klein
- javascript
Hallo zusammen,
ich bin kein JS-Spezialist und trau mich nur ansatzweise an das Problem heran.
Ich soll bei einer Passworteingabe überprüfen, ob das eingegebene Passwort mind. 6 Zeichen lang ist und ob mind. 1 numerischer und mind. 1 alphanumerischer Wert enthalten ist, also zB:
abc1def
Wie kann ich dies mit JS überprüfen?
fg
Markus Klein
Hallo Markus.
Ich soll bei einer Passworteingabe überprüfen, ob das eingegebene Passwort mind. 6 Zeichen lang ist
Dafür kannst du die Länge deiner Variable prüfen, welche die Eingabe enhält.
und ob mind. 1 numerischer und mind. 1 alphanumerischer Wert enthalten ist,
Hierfür wirst du dich wohl eines regulären Ausdruckes bedienen müssen:
Geeignete Funktion zum Testen: test()
RegEx: JS-RegEx
BTW: Du weißt, warum es alpha*numerisch* heißt?
Einen schönen Donnerstag noch.
Gruß, Ash*feel free*ura
He, nicht vorsagen!
Live long and prosper,
Gunnar
Hallo,
ich habe es jetzt mal mit test() versucht und bin gleich kläglich gescheitert.
Damit 4 als richtig erkannt wird müsste es ja so aussehen, oder:
<script language="JavaScript" type="text/javascript" >
var derSatz = "4";
var Suche = /\d./;
var Ergebnis = Suche.test(derSatz);
if (Ergebnis == false) {
document.write("nichts gefunden");
}
else {
document.write("gefunden");
}
</script>
Aber es funktioniert leider nicht.
Was mache ich falsch.
Hier müsste ich gefunden zurückbekommen, aber ich bekomme immer wieder "nichts gefunden" zurück, warum?
fg
Markus
Markus,
var Suche = /\d./;
sucht nach einer Ziffer gefolgt von einem beliebigen Zeichen; passt also nicht auf "4".
if (Ergebnis == false)
Der Vergleich gegen false
ist unnötig: if (!Ergebnis)
Live long and prosper,
Gunnar
Hallo, sorry hab wohl etwas zu schnell geschossen.
Die Lösung für die Suche ob eine Zahl in dem String enthalten ist, lautet:
<script language="JavaScript" type="text/javascript" >
var derSatz = "abcdefgh3";
var Suche = /\d/;
var Ergebnis = Suche.test(derSatz);
if (Ergebnis == false) {
document.write("nichts gefunden");
}
else {
document.write("gefunden");
}
</script>
UND ich meinte mit alphanumerisch eigentlich alphabetisch.
Wie kann ich nun mit regex herausfinden, ob auch ein Buchstabe vorhanden ist?
fg
Markus
<script language="JavaScript" type="text/javascript" >
Das language-Attribut kommt in den Müll.
Wie kann ich nun mit regex herausfinden, ob auch ein Buchstabe vorhanden ist?
Markus,
Du hast in [http://de.selfhtml.org/javascript/objekte/regexp.htm] das überlesen:
\w findet alle alphanumerischen Zeichen und den Unterstrich (typische Bedingung etwa für programmiersprachengerechte selbstvergebene Namen).
Wenn du _ nicht haben willst: [A-Za-z]\
Für Passwörter kann es auch sinnvoll sein, Groß- und Kleinbuchstaben getrennt abzu fragen: [A-Z]\ und [a-z].
Live long and prosper,
Gunnar
Hallo Gunnar,
ah so funktioniert dies also:
/\w.+[A-Za-z]/
Dies ist aber nirgends zu lesen und ich bin jetzt auch nur durch oftmaliges probieren hingekommen.
Warum ist dies nicht besser dokumentiert?
Gibt es da eine bessere Doku zu Regex?
Bzgl. [] steht ja nirgendswo was?
fg
Markus
Hallo Markus.
ah so funktioniert dies also:
/\w.+[A-Za-z]/
Nein, tut es nicht.
Dort steht:
\w - Ein beliebiges alphanumerisches Zeichen und „_“
.+ - Ein beliebiges Zeichen, mindestens ein Mal
[A-Za-z] - Ein Zeichen von A-Z bzw. a-z.
Dass diese RegEx in jedem Fall funktioniert, ist daher nicht weiter verwunderlich.
Dies ist aber nirgends zu lesen und ich bin jetzt auch nur durch oftmaliges probieren hingekommen.
Probiere weiter.
Warum ist dies nicht besser dokumentiert?
Es heißt *Self*HTML
Gibt es da eine bessere Doku zu Regex?
IMHO ja: PCRE Evaluator: » Was sind RegExp? « (Wobei dies schon eher Richtung PHP/Perl geht.)
Bzgl. [] steht ja nirgendswo was?
Siehe oben. Damit definierst du eine Zeichenklasse.
Einen schönen Donnerstag noch.
Gruß, Ash*feel free*ura
Hallo,
ah so funktioniert dies also:
/\w.+[A-Za-z]/Nein, tut es nicht.
Dort steht:\w - Ein beliebiges alphanumerisches Zeichen und „_“
.+ - Ein beliebiges Zeichen, mindestens ein Mal
[A-Za-z] - Ein Zeichen von A-Z bzw. a-z.Dass diese RegEx in jedem Fall funktioniert, ist daher nicht weiter verwunderlich.
Dies ist aber nirgends zu lesen und ich bin jetzt auch nur durch oftmaliges probieren hingekommen.
Probiere weiter.
Ok, hab ich gemacht:
/[A-Za-z]\w/
Ist die Lösung, oder?
Hab ich aber auf:
http://pcre.nophia.de/explain/backslash/index.php
gefunden.
fg
Markus
/[A-Za-z]\w/
Ist die Lösung, oder?
Ist "a1a1a1" ein gültiges Passwort?
Live long and prosper,
Gunnar
Hallo,
Ist "a1a1a1" ein gültiges Passwort?
Ja, warum?
Mit dieser RegEx will ich nur nachsehen ob ein Buschstabe in dem String ist.
Stimmt es so, oder nicht?
<script type="text/javascript">
var derSatz = "786a8887";
var Suche = /[A-Za-z]\w/;
var Ergebnis = Suche.test(derSatz);
if (Ergebnis == false) {
document.write("nichts gefunden");
}
else {
document.write("gefunden");
}
</script>
fg
Markus
Ist "a1a1a1" ein gültiges Passwort?
Ja, warum?
Was sagt denn dann dein Script dazu?
var derSatz = "a1a1a1";
var Suche = /[A-Za-z]\w/;
var Ergebnis = Suche.test(derSatz);
if (Ergebnis == false) {
document.write("nichts gefunden");
}
else {
document.write("gefunden");
}
Live long and prosper,
Gunnar
Hallo,
Was sagt denn dann dein Script dazu?
na gefunden sagt es, was ja auch stimmt.
Wenn noch was nicht stimmt, dann sag es mir doch einfach, oder willst du nicht?
Wie gehört den jetzt die Regex?
fg
Markus
Markus,
Sorry, mein Denkfehler. Grad hatte ich noch zitiert, was \w bedeutet, einen Wimpernschlag später dachte ich, Ziffern gehören nicht dazu.
Was nicht heißt, dass dein regulärer Ausdruck stimmt: überprüfe "12345a".
Du wolltest doch nur ein Zeichen finden, warum suchst du nach zwei aufeinanderfolgenden: [A-Za-z] und \w?
Ich würd die Variablen auch anders nennen:
var passwort = "foo";
var Buchstabe = /[A-Za-z]/;
var enthaeltBuchstabe = Buchstabe.test(passwort);
if (!enthaeltBuchstabe) {
document.write("nichts gefunden");
}
else {
document.write("gefunden");
}
Wenn du auch Umlaute zulassen willst, musst du die mit in die eckigen Klammern tun (große und kleine).
Live long and prosper,
Gunnar
Hallo,
na das hättet ihr auch gleich sagen können, dass es so funktioniert:
var derSatz = "1231231";
var Suche = /[A-Za-z]/;
var Ergebnis = Suche.test(derSatz);
if (Ergebnis == false) {
document.write("nichts gefunden");
}
else {
document.write("gefunden");
}
fg
Markus
na das hättet ihr auch gleich sagen können, dass es so funktioniert:
Markus,
Hätten wir. Aber beim Selbstfinden der Lösung lernt man am meisten. Und behält es länger im Gedächtnis.
Live long and prosper,
Gunnar
Hallo,
na das hättet ihr auch gleich sagen können, dass es so funktioniert:
Markus,
Hätten wir. Aber beim Selbstfinden der Lösung lernt man am meisten. Und behält es länger im Gedächtnis.
Ja eh, aber ich war echt schon sehr "angfressen", weil ich echt schon lange "herumgeschissen" habe, aber zum Glück ist es ja doch noch was geworden.
dank euch
fg
Markus
Warum ist dies nicht besser dokumentiert?
Gibt es da eine bessere Doku zu Regex?
In SELFHTML: http://de.selfhtml.org/perl/sprache/regexpr.htm (ein Link dorthin ist auch auf http://de.selfhtml.org/javascript/objekte/regexp.htm)
Das PERL-Spezifische dort kannste überlesen; die regulären Ausdrücke dürften in JavaScript genauso sein.
Live long and prosper,
Gunnar
Ich soll bei einer Passworteingabe überprüfen, ob das eingegebene Passwort mind. 6 Zeichen lang ist und ob mind. 1 numerischer und mind. 1 alphanumerischer Wert enthalten ist, also zB:
Markus,
Schau doch mal, was das http://de.selfhtml.org/javascript/objekte/string.htm@title=String-Objekt so bietet. http://de.selfhtml.org/javascript/objekte/string.htm#length@title=lenght dürfte dich interessieren.
Zum Test auf Ziffern und Buchstaben bietet sich die Methode http://de.selfhtml.org/javascript/objekte/regexp.htm#test@title=test() des http://de.selfhtml.org/javascript/objekte/regexp.htm@title=RegExp-Objektes an.
Dann noch etwas http://de.selfhtml.org/javascript/sprache/bedingt.htm@title=if und eine Prise http://de.selfhtml.org/javascript/sprache/operatoren.htm#logisch@title=&& dazugeben … fertig ist die Soße.
Live long and prosper,
Gunnar
Hallo Gunnar.
Schau doch mal, was das http://de.selfhtml.org/javascript/objekte/string.htm@title=String-Objekt so bietet. http://de.selfhtml.org/javascript/objekte/string.htm#length@title=lenght dürfte dich interessieren.
Zum Test auf Ziffern und Buchstaben bietet sich die Methode http://de.selfhtml.org/javascript/objekte/regexp.htm#test@title=test() des http://de.selfhtml.org/javascript/objekte/regexp.htm@title=RegExp-Objektes an.
Erstaunlich... (Wann hast du angefangen zu tippen?)
Einen schönen Donnerstag noch.
Gruß, Ash*feel free*ura
Erstaunlich... (Wann hast du angefangen zu tippen?)
Äh…, jedenfalls bin ich nach dir fertig geworden. Was natürlich an meinen zusätzlichen Hinweisen zu if und && lag. ;-)
Live long and prosper,
Gunnar
Hallo Gunnar.
Erstaunlich... (Wann hast du angefangen zu tippen?)
Äh…, jedenfalls bin ich nach dir fertig geworden.
Nicht ausweichen!
Was natürlich an meinen zusätzlichen Hinweisen zu if und && lag. ;-)
Ja, berechtigte Hinweise.
Einen schönen Donnerstag noch.
Gruß, Ash*feel free*ura
Markus,
Wie sieht deine Lösung jetzt aus?
Meine ist http://gunnarbittersmann.de/2005/passwordchecker-20051006.html
Live long and prosper,
Gunnar