• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

Nur Buchstaben und Zahlen zulässig in einem String

olnol

Alkmene
Registriert
28.12.09
Beiträge
30
Wie kann ich einen String nach Sonderzeichen durchsuchen, bzw umgekehrt prüfen ob in einem String nur Buchstaben(groß/klein) und Ziffern enthalten sind?
 
in welcher Programmiersprache?
wenn du z.B. nach dem Ascii code gehst kannst du schon ganz gut Bereiche ausschliessen. D.h. wenn Ascii code zwischen 0 u. 32 (glaub ich) enthalten ist, ist es auf jeden Fall ein Steuerzeichen usw.
 
Das ganze soll in einem Bash-Skript umgesetzt werden.
 
na dann ists ja einfach, wie bezierkurve meinte: regular expressions
 
Hi,

es gibt sog. Zeichenklassen in regex. Die Zeichenklasse für Alphanumerisches ist "alnum".

Wenn du jetzt testen willst ob in einem String auch andere als alphanumerische Zeichen enthalten sind suchst du nach "[^[:alnum:]]".

Beispiel:

Code:
mac:~ steinchen$ echo "123abc=;:" | grep -E '[^[:alnum:]]'
123abc=;:
mac:~ steinchen$ echo "123abc" | grep -E '[^[:alnum:]]'
mac:~ steinchen$
cu
 
RegEx:
^[a-zA-Z0-9]+$
[^[:alnum:]]
...
Ähem. Extended RE (--> "egrep"):
Code:
^[[:alnum:]]+$

(Und vorher bitte im Zweifelsfall LANG auf die gewünschte Sprache setzen (bzw all die LC_* Umgebungsvariablen). Dann klappts nicht nur mit den deutschen Umlauten, sondern ggf. auch mit dem türkischen "¥". Danke.)
 
Habs nun so gelöst:

Code:
    var=$(echo "$string" | sed 's/[A-Z/a-z/0-9]//g';)
            if [ "$var" ]; then
                {
                # sollte diese nicht Leer sein, ist der name ungültig
                       err_msg="ungültig"
                }
                else
  err_msg="gültig"
}
fi
                {
 
Habs nun so gelöst:

Code:
    var=$(echo "$string" | sed 's/[A-Z/a-z/0-9]//g';)
            if [ "$var" ]; then
                {
                # sollte diese nicht Leer sein, ist der name ungültig
                       err_msg="ungültig"
                }
                else
  err_msg="gültig"
}
fi
                {

Hi,

das Variabeln-Testen in der Bash ist immer nicht so der Bringer. Man macht besser ein

Code:
[ "${var}x" != "x" ]
Wenn dann nur ein "x" drinnen steht, dann ist die Variable leer. Weil was ist, wenn sie nicht gesetzt ist o.ä. dann kanns kritisch werden.

cu
 
sollte nicht auch
Code:
if [ -n "$1" ]; then
gehen?

-n wahr, wenn string nicht leer
-z wahr, wenn string leer

if [ "$var" ], sollte hingegen immer wahr sein, oder hab ich das falsch in Errinnerung?