1Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
7
7
ZUGRIFFE
1058
1058
EMPFEHLEN
-
03.10.10 11:59 #1FlaverSaver Tutorials.de Gastzugang
Hallo liebes Forum,
ich habe ein Problem mit Regex.
Bei meiner Registration für neue Benutzer sollen Sonderzeichen erst ab fünf Zahlen bzw. Buchstaben erlaubt sein.
Momentan zähle ich mit strlen die Länge des Benutzernamens, wenn der Benutzername fünf oder weniger : Zeichen hat setze ich folgenden Regex
Wenn er mehr Zeichen hat setze ich:PHP-Code:$regex = '/^([A-Za-z0-9öäüÄÖÜßáàâéèêíìîóòôúùû]?(\s)?)+$/';
Nun ist das Problem, dass zum Beispiel der Benutzername ************ (sechs Rufzeichen) gültig ist, obwohl er keine Zahlen bzw. Buchstaben enthält. Das liegt ja daran das beim zweiten Regex auch meine Sonderzeichen gültige Zeichen sind und mit gezählt werden.PHP-Code:$regex = '/^([A-Za-z0-9öäüÄÖÜßáàâéèêíìîóòôúùû:;()!?*._-]?(\s)?){4,}$/';
Ich habe folgenden Regex probiert, um dafür zu sorgen, dass mindestens fünf Zahlen bzw. Buchstaben verwendet werden müssen. Nur leider funktioniert er nicht.
Was muss ich also ändern, damit mindestens fünf Buchstaben vorhanden sein müssen, damit Sonderzeichen als gültig anerkannt werden?PHP-Code:$regex = '/^([A-Za-z0-9öäüÄÖÜßáàâéèêíìîóòôúùû:;()!?*._-]?(\s)?)([A-Za-z0-9öäüÄÖÜßáàâéèêíìîóòôúùû]{4,})$/';
mfg
Philip
-
03.10.10 12:06 #2
Mach doch ein Regex, dass Dir die Anzahl der Einzelfunde hergibt, also
(1) egal, wieviele Zeichen, erstmal Funde für Zeichen [a-zA-z0-9]{1} zählen.
(2) Wenn weniger als 6, dann muß Len mit Count übereinstimmen
(3) Wenn länger als 5, dann muß Len-Count mindestens 5 sein.
mfg chmeeMein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
-
03.10.10 12:22 #3FlaverSaver Tutorials.de Gastzugang
Hallo,
sehr gute Idee. Warum immer so umständlich?
Nur wie zähle ich nun mit preg_match die Treffer? Oder könnte ich einfach
machen?PHP-Code:preg_match('muster', 'string', $treffer);
echo count($treffer);
//Habs gerade probiert, count($treffer); gibt immer 0 zurück.
mfg
Philip
-
03.10.10 12:26 #4
preg_match gibt doch nur einen Fund zurück. Du nimmst preg_match_all
und solltest mit echo count($treffer[0]); die Anzahl bekommen.
mfg chmeeMein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
-
03.10.10 12:47 #5
- Registriert seit
- Oct 2010
- Beiträge
- 4
Hallo,
so dann gebe ich meinen Postings auch mal eine Persönlichkeit.
So ich glaube ich stelle mich gerade verdammt doof an.
Ich habe folgendes:
Ich bekomme aber immer nur einen Treffer zurück...PHP-Code:$regex = '/^([A-Za-z0-9öäüÄÖÜßáàâéèêíìîóòôúùû ]?(\s)?)+$/';
$eingabe = 'lol was soll das eig 123';
preg_match_all($regex, $eingabe, $treffer );
echo 'Count:'.count($treffer[0]).'<br/>Eingabe:'.$eingabe;
echo '<pre>';
var_dump($treffer);
Ich weiß nicht ob da irgendwo ein grober Schnitzer ist oder ob ich einfach gerade voll auf dem Schlauch stehe...
Philip
-
03.10.10 13:09 #6
Du nimmst als Quantor ein ? (entspricht {0,1}), wogegen ich auf genau ein Zeichen beschränke {1} UND Deine Regex bezieht sich immer noch auf eine längere Sequenz (allein durch Anfang ^ und Ende $), anstatt auf einzelne Zeichen..
Sorry, Fehler können drin sein, habs grad so hingeschmiert..PHP-Code:$string="DasIstEin#TEST";
$regex="#[A-Za-z0-9öäüÄÖÜßáàâéèêíìîóòôúùû]{1}#";
preg_match_all($regex,$string,$found);
echo "<pre>";
var_dump($found);
echo "</pre>";
echo count($found[0])." von ".strlen($string)." sind Nichtsonderzeichen!";
mfg chmee
p.s.: Schau mal in meiner Signatur, das ist der Regex-Online-Tester, sehr feines Spielzeug zum Testen und Verstehen.
p.p.s.: Willkommen
p.p.p.s.:
Es heißt strlen(), nicht len();
Mein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
-
03.10.10 14:21 #7
- Registriert seit
- Oct 2010
- Beiträge
- 4
Hey,
Super, danke das klappt wunderbar, und es ist bis jetzt Fehlerfrei!
Ok, den Regex Tester probiere ich dann mal aus.
Danke fürs "Willkommen"
Wo habe ich oder auch du len() verwendet?
mfg
Philip
-
03.10.10 14:24 #8
Ich hatte anfangs in meinem Source len() benutzt und nach nem Kurztest bemerkt, dass das echo nicht ausgeworfen wird, kurzer Blick.. Ah ja, strlen() anstatt len()..
mfg chmeeMein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
Ähnliche Themen
-
[msyql] Suche nach Buchstaben mit diakritischen Zeichen
Von bekay im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 03.08.08, 17:17 -
(RegEx) Pwd-Länge u. mind.2 Zahlen o. Buchstaben
Von Watusimann im Forum PHPAntworten: 5Letzter Beitrag: 13.07.07, 13:28 -
Verzweifelte Suche nach einer gescheiten Regex
Von takidoso im Forum JavaAntworten: 0Letzter Beitrag: 17.01.07, 15:40 -
Suche Platine die nach Knopfdruck nach 4 Sek. ein Relais durchschalten
Von Twanko im Forum ElektrotechnikAntworten: 2Letzter Beitrag: 06.12.04, 12:35 -
[regex] ß ersetzen, aber nur wenn buchstaben drum herum stehen
Von theonlyone im Forum PHPAntworten: 3Letzter Beitrag: 18.07.03, 14:51





Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren