Font
[thread]5640[/thread]

Regulärer Ausdruck???

Readers: 2


<< |< 1 2 3 >| >> 23 entries, 3 pages
skontox
 2003-08-20 15:18
#71771 #71771
User since
2003-08-06
193 articles
BenutzerIn
[default_avatar]
Guten Tag!
Ich hab ein kleines Problem
Ich muß gültige Email-Adressen erkennen, bislang kann ich nur
die normalen Adressen wie z.B. "skontox@gmx.de" erkennen, wenn ich aber soetwas habe "nifi-na.skontox@gmx.de" bekomme ich schon Probleme!

hier ist mein bisheriger regulärer Ausdruck:

Code: (dl )
$to_email =~ /^([a-zA-Z0-9_\.\@\+]+)$/


Wie könnte man den umgestelltalten, damit er die erweiterten Emailadressen auch erkennt?

Und noch eine Frage was bedeutet "$1" ?


Gruß skontox
snadra
 2003-08-20 15:30
#71772 #71772
User since
2003-08-11
265 articles
BenutzerIn
[Homepage] [default_avatar]
Nimm mal das + vor de schliessenden eckigen Klammer raus.
$1 bis $n enthalten die gefundenen matches die Du in der regex über ()-Klammern festlegst.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
my $string = 'skontox will regex lernen';
$string =~ /^(\w+)\s\w+\s(\w+)/;
print "Wer will lernen?\n";
print "$1\n";
print "Und was?\n";
print "$2\n";

perldoc perlre
beschreibt Perl regexes
Die Mail Adresse solltest Du noch etwas gründlicher validieren, aber das ist für regexes ne ganz gut Übung...
http://hamburg.pm.org
jeden 2. mittwoch im monat
--
#!/usr/bin/perl -w
$l=join('',map chr,(116,110,105,114,112))if$^T;
!!$$?@_=qw(Jhfg Aabgure Prey Hnpxre):$l=1;
for(@_){eval reverse($l)."'"._(_(_($_))).' \''}
sub _{$_=~y+a-z+n-za-m+and pop}
coax
 2003-08-20 15:39
#71773 #71773
User since
2003-08-11
457 articles
BenutzerIn
[default_avatar]
Die Variablen $1, $2, $3 ... bekommen den Wert zugewiesen der für die runden Klammern in deinen Suchmuster des Regexp steht.
Code (perl): (dl )
1
2
3
4
5
&#36_ = 'abc123def';
/(\D+)(\d+)(\D+)/; # NichtziffernZiffernNichtziffern
print "&#361 -- &#362 -- &#363\n";
# Ausgabe:
# abc -- 123 -- def

$1, $2 ... können auch im Ersetzungsteil des Regexp verwendet werden.

Zum Prüfen von E-Mail-Adressen könntest du CPAN-Module wie Email::Valid verwenden.
,,Das perlt aber heute wieder...'' -- Dittsche
SirLant
 2003-08-20 15:40
#71774 #71774
User since
2003-08-04
516 articles
BenutzerIn
[default_avatar]
Meine E-Mail Validierung sieht so aus:

Code (perl): (dl )
&#36str =~ /^[^@]+@[^.]+\.[^.]/
--Programming today is a race between Software Enginers striving to build bigger and better idiot-proof Programs,
and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
skontox
 2003-08-20 15:41
#71775 #71775
User since
2003-08-06
193 articles
BenutzerIn
[default_avatar]
Besten Dank erstmal!
Ich sehe schon ich muß mich da mal wieder reinfuchsen!

Gruß skontox
skontox
 2003-08-20 15:43
#71776 #71776
User since
2003-08-06
193 articles
BenutzerIn
[default_avatar]
Dir auch besten Dank! Werde ich gleich mal probieren!
Und danach werde ich mir die regulären Ausdrücke mal selbst aneignen, damit ich Euch nicht immer nerven muß! ;-)

Gruß skontox
snadra
 2003-08-20 15:45
#71777 #71777
User since
2003-08-11
265 articles
BenutzerIn
[Homepage] [default_avatar]
@SirLant, ich schreibe dir an:
%&§$"@&(//&%.$%&$%
und die hier erhälst Du nicht:
SirLant@forum.perl-cummunity.de

Wenn Du Email::Valid solltest Du alle Alphanumerischen Zeichen, Punkte und Bindestriche zulassen, gefolgt von einem @, asnschließend wieder Alphanumerische Zeichen, Punkte und Bindestriche.
Du könntest nach dem letzten Punkt, nur Buchstaben erlauben und deren Anzahl begrenzen.
http://hamburg.pm.org
jeden 2. mittwoch im monat
--
#!/usr/bin/perl -w
$l=join('',map chr,(116,110,105,114,112))if$^T;
!!$$?@_=qw(Jhfg Aabgure Prey Hnpxre):$l=1;
for(@_){eval reverse($l)."'"._(_(_($_))).' \''}
sub _{$_=~y+a-z+n-za-m+and pop}
snadra
 2003-08-20 15:47
#71778 #71778
User since
2003-08-11
265 articles
BenutzerIn
[Homepage] [default_avatar]
Ungefär so (ungetestet):
Code: (dl )
1
2
3
if ($mail !~ /[\w\.-]+@[\w\.-]+\.[A-Za-z]{5}/) {
     print "Keine gültige E-mail Adresse.";
}
\n\n

<!--EDIT|snadra|1061382244-->
http://hamburg.pm.org
jeden 2. mittwoch im monat
--
#!/usr/bin/perl -w
$l=join('',map chr,(116,110,105,114,112))if$^T;
!!$$?@_=qw(Jhfg Aabgure Prey Hnpxre):$l=1;
for(@_){eval reverse($l)."'"._(_(_($_))).' \''}
sub _{$_=~y+a-z+n-za-m+and pop}
SirLant
 2003-08-20 15:50
#71779 #71779
User since
2003-08-04
516 articles
BenutzerIn
[default_avatar]
Den RegExp, hab ich aus nem Buch, bin da selber nicht so fitt drin.
Aus dem Grund hab ich die auch vorgestellt, wollt ich auch wissen ob die Variante das akzeptiert :)
Wie müsste man das denn schreiben, wenn nur Zahlen+Buchstaben gehen sollten?
Ich muss prüfen, dass am Anfang nur \w und der Punkt zugelassen wird bis zu einem @,danach eine Zeichenkette, die wieder \w den Punkt und Bindestrich zulässt, anschließend vom Ende aufknüpfen, es müssen Buchstaben stehen und dann ein. ,sprich min 1Punkt nachdem @ stehen und nachdem Punkt min 2 Buchstaben.

Edit:
Ach du kannst also Gedanken lesen ;)\n\n

<!--EDIT|SirLant|1061380232-->
--Programming today is a race between Software Enginers striving to build bigger and better idiot-proof Programs,
and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
snadra
 2003-08-20 15:52
#71780 #71780
User since
2003-08-11
265 articles
BenutzerIn
[Homepage] [default_avatar]
[quote=SirLant,20.08.2003, 13:50]Ach du kannst also Gedanken lesen ;)[/quote]
Na klar! ;)
http://hamburg.pm.org
jeden 2. mittwoch im monat
--
#!/usr/bin/perl -w
$l=join('',map chr,(116,110,105,114,112))if$^T;
!!$$?@_=qw(Jhfg Aabgure Prey Hnpxre):$l=1;
for(@_){eval reverse($l)."'"._(_(_($_))).' \''}
sub _{$_=~y+a-z+n-za-m+and pop}
<< |< 1 2 3 >| >> 23 entries, 3 pages



View all threads created 2003-08-20 15:18.