E-Mail Eingabe Überprüfung mit JS
Steffen
- javascript
0 Struppi
Hallo!
Nachdem ihr mir gestern auch so schnell geholfen habt, hier noch zwei weitere Fragen:
1.Wie kann ich mittels JS überprüfen, ob in einer Email Adresse nicht nur das @ Zeichen (das Hab ich schon) sondern auch EIN Punkt ODER ein "-" vorkommt?
Grüße,
Steffen
1.Wie kann ich mittels JS überprüfen, ob in einer Email Adresse nicht nur das @ Zeichen (das Hab ich schon) sondern auch EIN Punkt ODER ein "-" vorkommt? Grüße,
Entweder mit eine RegEx oder mit indexOf, such's dir aus. http://selfhtml.teamone.de/javascript/objekte/regexp.htm http://selfhtml.teamone.de/javascript/objekte/string.htm
Struppi.
Um mal anzudeuten, wie schwierig das checken einer gültigen e-mail Adresse ist hier das Programm bzw. die RegEx (Perl) die ich benutze:
package checkmail; no strict;
$esc = '\\'; $Period = '.'; $space = '\040'; $tab = '\t'; $OpenBR = '['; $CloseBR = ']'; $OpenParen = '('; $CloseParen = ')'; $NonASCII = '\x80-\xff'; $ctrl = '\000-\037'; $CRlist = '\n\015'; # note: this should really be only \015.
$qtext = qq/[^$esc$NonASCII$CRlist"]/; # for within "..." $dtext = qq/[^$esc$NonASCII$CRlist$OpenBR$CloseBR]/; # for within [...] $quoted_pair = qq< $esc [^$NonASCII] >; # an escaped character
##############################################################################
$ctext = qq< [^$esc$NonASCII$CRlist()] >;
$Cnested = qq< $OpenParen # ( $ctext* # normal* (?: $quoted_pair $ctext* )* # (special normal*)* $CloseParen # )
;
$comment = qq< $OpenParen # ( $ctext* # normal* (?: # ( (?: $quoted_pair | $Cnested ) # special $ctext* # normal* )* # )* $CloseParen # )
;
##############################################################################
$X = qq< [$space$tab]* # Nab whitespace. (?: $comment [$space$tab]* )* # If comment found, allow more spaces.
;
$atom_char = qq/[^($space)<>@,;:".$esc$OpenBR$CloseBR$ctrl$NonASCII]/; $atom = qq< $atom_char+ # some number of atom characters... (?!$atom_char) # ..not followed by something that could be part of an atom
;
$quoted_str = qq< " # " $qtext * # normal (?: $quoted_pair $qtext * )* # ( special normal* )* " # "
;
$word = qq< (?: $atom # Atom | # or $quoted_str # Quoted string )
;
$domain_ref = $atom;
$domain_lit = qq< $OpenBR # [ (?: $dtext | $quoted_pair )* # stuff $CloseBR # ]
;
$sub_domain = qq< (?: $domain_ref | $domain_lit ) $X # optional trailing comments
;
$domain = qq< $sub_domain (?: $Period $X $sub_domain )*
;
$route = qq< @ $X $domain (?: , $X @ $X $domain )* # additional domains : $X # optional trailing comments
;
$local_part = qq< $word $X (?: $Period $X $word $X # additional words )*
;
$addr_spec = qq< $local_part @ $X $domain
;
$route_addr = qq[ < $X # < (?: $route )? # optional route $addr_spec # address spec > # > ];
$phrase_ctrl = '\000-\010\012-\037'; # like ctrl, but without tab
$phrase_char = qq/[^()<>@,;:".$esc$OpenBR$CloseBR$NonASCII$phrase_ctrl]/;
$phrase = qq< $word # leading word $phrase_char * # "normal" atoms and/or spaces (?: (?: $comment | $quoted_str ) # "special" comment or quoted string $phrase_char * # more "normal" )*
;
$mailbox = qq< $X # optional leading comment (?: $addr_spec # address | # or $phrase $route_addr # name and address )
;
sub check { my($address, $valid)=@_;
$valid = $address =~ m/^$mailbox$/xo; return($valid); }
1;