Schrift
[thread]426[/thread]

Schauen, ob Sonderzeichen vorhanden sind: also alles ausser a-z A-Z 0-9 _-.



<< |< 1 2 >| >> 12 Einträge, 2 Seiten
wkonline
 2005-02-08 20:31
#4313 #4313
User since
2004-05-09
11 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich brauche mal wieder eure Hilfe ;)

Und zwar will ich in einem String nachschauen, ob irgendwelche Zeichen ausser a-z A-Z 0-9 . - _ vorhanden sind.

Mein erster Ansatz war:

Code: (dl )
1
2
3
4
if ($input =~ /[äöüß]/i)
{
mach was....
}


Aber sobald ich in die Regel z.B. !"§$% eintrage funktioniert das ganze Script nicht mehr.

Gibt es evtl. eine Regel, wo ich festelgen kann, was erlaubt ist?

Gruß,

wkonline
format_c
 2005-02-08 20:39
#4314 #4314
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
if ($input =~ /[^A-Za-z0-9.-_]/) {
die "nicht erlaubt\n";
}


Das ^ in einer Zeichenklasse negiert sie.
Gruß Alex\n\n

<!--EDIT|format_c|1107888023-->
wkonline
 2005-02-08 20:48
#4315 #4315
User since
2004-05-09
11 Artikel
BenutzerIn
[default_avatar]
Hi,

danke!!! Funktioniert wunderbar!
Nur: sobald ich das Zeichen "/" erlauben will
Code: (dl )
if ($ziel =~ /[^A-Za-z0-9.-_/]/)


kommt folgende Meldung:

Code: (dl )
Unmatched [ in regex; marked by <-- HERE in m/[ <-- HERE ^A-Za-z0-9.-_/ at /home/wkonline/index.cgi line 2367.


Gruß,

wkonline
format_c
 2005-02-08 20:54
#4316 #4316
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Hoppla hab gemerkt dass das so nicht nicht so ganz passt. Das hier ist besser:
Code: (dl )
1
2
3
4
5
format_c@manchester:~/Develop/Perl> cat test.pl
chomp (my $input = <STDIN>);
print($input =~ /[^A-Za-z0-9._\- ]/ ? "nicht erlaubt\n" : "erlaubt\n");

format_c@manchester:~/Develop/Perl>


Gruß Alex
format_c
 2005-02-08 20:57
#4317 #4317
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Entweder escapest du das / mit einem \ da es ja der begrenzer der regex ist oder du definierst mit m andere begrenzer:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
format_c@manchester:~/Develop/Perl> cat test.pl
chomp (my $input = <STDIN>);
print($input =~ /[^A-Za-z0-9._\-\/ ]/ ? "nicht erlaubt\n" : "erlaubt\n");

format_c@manchester:~/Develop/Perl> vi test.pl
format_c@manchester:~/Develop/Perl> cat test.pl
chomp (my $input = <STDIN>);
print($input =~ m#[^A-Za-z0-9._\-/ ]# ? "nicht erlaubt\n" : "erlaubt\n");

format_c@manchester:~/Develop/Perl> perl test.pl
DAs ist erlaubt
erlaubt
format_c@manchester:~/Develop/Perl>


Gruß Alex
esskar
 2005-02-08 20:58
#4318 #4318
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
du musst dem / genauso wie das - ein \ vorrstellen!
wkonline
 2005-02-08 20:58
#4319 #4319
User since
2004-05-09
11 Artikel
BenutzerIn
[default_avatar]
Danke ;)
Funktioniert...\n\n

<!--EDIT|wkonline|1107889178-->
Strat
 2005-02-10 22:11
#4320 #4320
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
alternativ kannst du anstelle von / ein anderes begrenzerzeichen verwenden, wenn du noch ein m voranstellst z.B.
Code: (dl )
m~[^A-Za-z0-9._\-\/ ]~

wenn du einen buchstaben als begrenzerzeichen verwenden willst, muss zwischen dem m und dem buchstaben ein leerzeichen stehen:

Code: (dl )
m r[^A-Za-z0-9._\-\/ ]r
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Dubu
 2005-02-10 23:55
#4321 #4321
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Code: (dl )
m~[^\w\d/.-]~    # irgendetwas anderes als Wortzeichen (\w = A-Z, a-z, _), Ziffern (\d = 0-9), /, . oder -
\n\n

<!--EDIT|Dubu|1108072542-->
pq
 2005-02-12 22:43
#4322 #4322
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
wozu die regex-maschine anwerfen, wenn es so schneller geht:
if ($input =~ tr#a-zA-Z0-9_./##c) { print "nicht erlaubt" }
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2005-02-08 20:31.