callidus Geschrieben 24. August 2012 Teilen Geschrieben 24. August 2012 Hi, ich bin gerade dabei ein Registrierungsformular zu coden... das Passwort soll jeoch immer mindestens einen buchstaben und eien zahl enthalten. habe schon das halbe web nach einem passenden snipped durchsucht und komme immer zu den regex... jedoch keins hat bisher funktioniert. jemand eine Idee? lg Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 24. August 2012 Teilen Geschrieben 24. August 2012 habe schon das halbe web nach einem passenden snipped durchsucht und komme immer zu den regex... jedoch keins hat bisher funktioniert. Schreib den Ausdruck selber Regulärer Ausdruck Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dadagor Geschrieben 24. August 2012 Teilen Geschrieben 24. August 2012 Prüfe doch einfach mit javascript die einzelnen Zeichen, die übergeben werden ab, ob der ASCIIwert zwischen 65 und 90 oder zwischen 97 und 122 liegt, ist das der fall setzt du eine Variable auf "true" -> dann ist zumindest schonmal ein Buchstabe vorhanden. Zeitgleich kannst du dann noch jeden Buchstaben überprüfen ober er eine Zahl ist (!isNan(wert)) trifft das auf ein Zeichen zu setzt du eine weitere variable wieder auf true.. sind nach der schleife beide variablen auf true, ist das Passwort korrekt, sonst nicht.. ;-) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 24. August 2012 Teilen Geschrieben 24. August 2012 (bearbeitet) @dadagor: Das ist ein sehr naiver Ansatz, solche Prüfungen macht man wirklich mit regulären Ausdrücken, alles andere ist Anfängerniveau. Denn was passiert wenn man später feststellt, man will Groß- und Kleinbuchstaben, Zahlen und mind. ein Sonderzeichen!? Dann muss ich eine riesige Schleife mit If / Switch-Case bauen und darin dann die ASCII Codes der Zeichen speichern, das führt zu unübersichtlichen und absolut unnötigen Code. Die Prüfung mit einem regulären Ausdruck ist eine Zeile in der Form matchokay = string.match( regexpr ) Prüfe doch einfach mit javascript die einzelnen Zeichen, [...] ist das der fall setzt du eine Variable auf "true" -> dann ist zumindest schonmal ein Buchstabe vorhanden. Zeitgleich kannst du dann noch jeden Buchstaben überprüfen ober er eine Zahl ist (!isNan(wert)) trifft das auf ein Zeichen zu setzt du eine weitere variable wieder auf true.. sind nach der schleife beide variablen auf true, ist das Passwort korrekt, sonst nicht. Das ist ein wirklich sehr naiver Ansatz, falls man es in dieser Form machen will, kann man dann abbrechen, wenn sowohl ein Zeichen, wie auch eine Zahl erkannt wurde, denn dann wäre der Ausdruck schon gültig. Man muss nicht bis zum Ende der Zeichenkette laufen Außerdem braucht man hier keine If Bedingung. charfound = false; numberfound = false; for( i=0; (i < length(eingabe)) && not(charfound && numberfound); ++i) { charfound = charfound || ischar(eingabe[i]); numberfound = numberfound || isnan(eingabe[i]) } ischar prüft dann auf den korrekten ASCII Code. Bearbeitet 24. August 2012 von flashpixx Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
callidus Geschrieben 24. August 2012 Autor Teilen Geschrieben 24. August 2012 Hi, das mit Regex ist zwar ne nette sache, jedoch steige ich da absolut nicht durch, wie die aufgebaut sind, und wie die dann auch wirklich funktionieren.... und wwenn man danach mal suchst bekommt man sehr viel mist geliefert.... muss odch irgendwie noch ne andere simple lösung geben, außer regex.... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 24. August 2012 Teilen Geschrieben 24. August 2012 das mit Regex ist zwar ne nette sache, jedoch steige ich da absolut nicht durch, wie die aufgebaut sind, und wie die dann auch wirklich funktionieren.... Der Wikiartikel ist wirklich sehr gut, also wirklich mal Stück für Stück durcharbeiten. Ich mache jetzt mal eine "Mega-Kompakt-Minimalistische-Schnell-Einführung" in reguläre Ausdrücke. Also wir haben einen String / Zeichenkette als Grundlage, die wir überprüfen wollen, d.h. wir wollen wissen, ob eben diese Zeichenkette irgendeiner Struktur entspricht. Beispiel 1 Zeichenkette: ab Regulärer Ausdruck: ab d.h. z.B. AB würde nicht als passend gewertet werden, ebenso wie xy usw Beispiel 2 Zeichenkette: aaaaaabbbbbbbbbbbbbb also eine Zeichenkette, die eine beliebige Anzahl an a's und dann eine beliebige Anzahl von b's enthält (jeweils Kleinbuchstaben) regulärer Ausdruck: (a+)(b+) + (oder auch *) sind so genannte Quantoren, also d.h. das Zeichen kommt "mehrfach" vor, * heißt einfach >= 0, + eben dann einfach > 0 d.h. hier wäre der Ausdruck ab gültig oder eben mehrere a's und mehrere b's (als Hinweis, die Prüfung "genauso viele a's wie b's geht nicht mit regulären Ausdrücken, denn die reguläre Ausdrücke können keine Anzahlen vergleichen, als weiterführenden Hinweis Pumping-Lemma ) Beispiel 3 Zeichenkette: 023124543 also wir wollen Prüfen, ob eine Zeichenkette eine Natürliche Zahl ist, d.h. eine beliebe Anzahl von den Ziffern 0 bis 9 ist (a012 wäre dann nicht gültig) regulärer Ausdruck: \d+ [alternativ geht auch: (0|1|2|3|4|5|6|7|8|9)+ oder (0-9)+ ] Für eine Ziffer gibt es den Ausdruck \d und eben kombiniert mit einem Quantor Beispiel 4 Zeichenkette: 11tzzzzz4235fbz4r5432ufbazu / 23234525fasfafdas@123465 etwas allgemeiner gesagt, ich möchte prüfen, ob eine Zeichenkette mit einer natürlichen Zahl beginnt, dann eine Anzahl beliebiger Buchstaben, die keine Zahlen sind, kommt und dann eine beliebige Anzahl (oder auch keine) an Zeichen (Zeichen, Zahlen oder auch Sonderzeichen) folgt. regulärer Ausdruck: (\d+)([A-Za-z]+)(.*) Also das ganze in die 3 Teile zerlegt; natürlichen Zahl Beginn: (\d+) eine Anzahl beliebiger Buchstaben: ([A-Za-z]+) beliebige Anzahl (oder auch keine) an Zeichen (.*) Also der reguläre Ausdruckt ermöglicht es eine Zeichenkette zu prüfen, ob sie eben einer gewissen Struktur entspricht. Du kannst halt jedes einzelne Zeichen Deiner Eingabe prüfen (wie gesagt über deren ASCII Codes, den Hinweis auf Unicode erspare ich hier mal, gerade im Webbereich, sollte man an das richtige Encoding denken !) oder Du nutzt halt eben reguläre Ausdrücke. Die regulären Ausdrücke sind eben allgemeiner und ermöglichen es eben, dass der Code nicht mit unnötigen Einzelprüfungen der Character aufgebläht wird. Zu Deinem Problem im Detail: Du willst prüfen, ob eine Zeichenkette eine Ziffer enthält, d.h. zerlege also Deine Zeichenkette, so dass Du die Teile prüfen kannst (wie in Bsp 4), wenn das nicht geht, zerlege die Teile wieder (Rekursion). Allgemein formuliert stellst Du die Frage: Welche Struktur muss das Passwort haben? Also z.B. Passwort muss mit einem Buchstaben (gross oder klein) beginnen, dann muss irgendwann eine Ziffer folgen und danach mindestens eine Ziffer oder Buchstabe (also eine kleine Abwandlung von Bsp 4). Schau Dir zu den Beispielen den Wikipedialink an HTH Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.