• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> 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?
 

mcbert

Tokyo Rose
Registriert
30.06.09
Beiträge
67
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.
 

olnol

Alkmene
Registriert
28.12.09
Beiträge
30
Das ganze soll in einem Bash-Skript umgesetzt werden.
 

mcbert

Tokyo Rose
Registriert
30.06.09
Beiträge
67
na dann ists ja einfach, wie bezierkurve meinte: regular expressions
 

Steinchen

Finkenwerder Herbstprinz
Registriert
15.04.10
Beiträge
470
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
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
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.)
 

olnol

Alkmene
Registriert
28.12.09
Beiträge
30
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
                {
 

Steinchen

Finkenwerder Herbstprinz
Registriert
15.04.10
Beiträge
470
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
 

5amba

Jonagold
Registriert
21.06.10
Beiträge
20
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?