 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
29.01.2005, 23:04
|
#1
|
|
TP-Supporter
Registriert seit: Jan 2003
Ort: Dresden
|
Regex
Schönen Samstag Abend,
ich versuche ein Regex für einen String mit Folgenden Kennzeichen zu
erstellen:
- 3-20 Zeichen lang // klappt glaube ich
- Zahlen und Buchstaben (ohne Umlaute) // klappt auch
- Sonderzeichen @()?/. // geht
folgende Dinge funktionieren nicht:
- Sonderzeichen "-"
- und es darf kein(!!!) Leerzeichen im String sein.
also mit dem Leerzeichen, ich finde echt keinen Ansatz 
Kann mir jemand helfen?
So schaut es jetzt aus:
Code:
^([1-zA-Z0-1@()?/.\s]{3,20})$^
lg
PS: Mit "-" hat sich erledigt. Muss mit "\-" maskiert werden.
Die verbesserte Version:
Code:
^([1-zA-Z0-1\-@()?/.\s]{3,20})$^
|
|
|
30.01.2005, 02:19
|
#2
|
|
Guest
Registriert seit: Aug 2002
|
Nimm die ASCII-Tabelle und einige dich, welche Zeichen du zulassen oder welche du nicht zulassen willst.
|
|
|
30.01.2005, 02:58
|
#3
|
|
TP-Special Mod
Registriert seit: Jun 2001
Ort: 8°21' O 49°1' N
|
Mal so aus dem Bauch raus ( ungetestet ):
versuch's mal mit
^\w{3,20}$ ( findet alle alphanumerischen Zeichen - bei den Sonderzeichen wirds wohl scheitern )
oder mit
^\S{3,20}$ ( findet alle nicht-Whitespaces - könnte eher funktionieren )
...ansonsten setz ich mich morgen etwas nüchterner mal dran... 
|
|
|
30.01.2005, 08:55
|
#4
|
|
TP-Supporter
Registriert seit: Jan 2003
Ort: Dresden
|
@Strogij: Den Ansatz mit der ASCII-Tabelle hatte ich auch, bin aber an der Umsetzung gescheitert.
Hast Du da vielleicht ein kleines Beispiel?
@webmichl: "^\S{3,20}$" ... findet Leerzeichen und lässt sie nicht zu,
aber Umlaute wie ä, ö, ü werden zugelassen. Das darf nicht sein
schönen Tag und keinen Kater 
|
|
|
30.01.2005, 09:00
|
#5
|
|
TP-Supporter
Registriert seit: Jan 2003
Ort: Dresden
|
phu, ich habe es:
bearbeitet: geht irgendwie doch nicht
Code:
^\w[(|)|/|\-]{1,3}\w{3-20}$^
Danke für die Ideen,
... über ein Beispiel mit der ASCII-Tabelle würde ich mich sehr freuen.
lg
Geändert von Nico (30.01.2005 um 09:16 Uhr).
|
|
|
30.01.2005, 10:44
|
#6
|
|
Guest
Registriert seit: Aug 2002
|
Naja, du nimmst halt die Zeichen aus der Tabelle, die du brauchst der Reihe nach:
[A-Za-z]{3,20} Gehst die Tabelle durch und lässt zwischen den von-bis die Zeichen aus, die du nicht haben möchtest. Angenommen du willst den Buchstaben 'd' nicht haben: [a-ce-z] usw. Kapiert, was ich meine? 
|
|
|
30.01.2005, 11:02
|
#7
|
|
TP-Supporter
Registriert seit: Jan 2003
Ort: Dresden
|
hm...
also das klappt so irgendwie nicht.
Schon wenn ich
Code:
[A-Za-z()?\-]{3,20}
nutze ist der String mit "ä,ü,ö" und auch einem Leerzeichen gültig.
Das darf ja nicht sein.
Wie kann ich Zeichen explizit ausschließen?
|
|
|
30.01.2005, 11:11
|
#8
|
|
Guest
Registriert seit: Aug 2002
|
Zitat:
|
Zitat von Nico
Schon wenn ich
Code:
[A-Za-z()?\-]{3,20}
nutze ist der String mit "ä,ü,ö" und auch einem Leerzeichen gültig.
Das darf ja nicht sein.
|
Da behaupte ich das Gegenteil. Außer den Zeichen, die in dieser Klasse aufgezählt werden, wird nix zugelassen (hab's getestet).
|
|
|
01.02.2005, 19:13
|
#9
|
|
TP-Supporter
Registriert seit: Jan 2003
Ort: Dresden
|
hm, vielleicht habe ich ja da irgendwo einen Denkfehler. Mein Code sieht
folgendermaßen aus:
PHP-Code:
<?php
if (!@preg_match("^[A-Za-z()\-]{3,20}^","d hjh")){
echo "<span class=\"error\">Fehler im String: </span>";
}
else {
echo "<span class=\"green\">Der String: ist in Ordnung.<span>";
}
?>
... Der String enthält ein Leerzeichen. Das soll als nicht gültig ausgewertet werden. Also sollte die Ausgabe "Fehler im String" sein.
... ist es aber nciht.
Kannst Du mir weiter helfen?
Danke
|
|
|
01.02.2005, 20:13
|
#10
|
|
Guest
Registriert seit: Aug 2002
|
PHP-Code:
if (!preg_match('/^[A-Za-z()\-]{3,20}$/','d hjh'))
|
|
|
02.02.2005, 16:05
|
#11
|
|
TP-Supporter
Registriert seit: Jan 2003
Ort: Dresden
|
Klappt
Danke, das klappt. Ich habe es wohl noch nicht so richtig raus, was das schreiben und interpretieren von Ausdrücken angeht
schöne Woche und danke nochmal
|
|
|
02.02.2005, 17:21
|
#12
|
|
Guest
Registriert seit: Aug 2002
|
Naja, du hast eben keine Grenzen gesetzt - es ist nicht gesagt, dass der Ausdruck den ganzen String betreffen soll. Daher sind jetzt ^ und $ da.
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 07:46 Uhr.
|
 |