in reply to slightly broken reg-ex
Advice on parsing e-mail addresses: don't. It's a lot more complex than it looks at first glance. The only regex capable of getting it anywhere close to right is a few hundred characters long, and that doesn't even get embedded comments.
Instead, use Email::Valid (which contains that massive regex already) to check if the address conforms to RFC 822 (which defines the format for e-mail addresses), then use a simple /(.*)/ to untaint it if it passes (that is, if you really have to untaint it).
Update: About the code you wrote above--you're not capturing any data in the regex, so $1 and $2 won't be intitilized. For future referance, you need to do something like:
if($str =~ /([\w\.]+)\@([\w\.]+)/) { $untainted = "$1\@$2"; }
But my comments above still apply.
----
I wanted to explore how Perl's closures can be manipulated, and ended up creating an object system by accident.
-- Schemer
Note: All code is untested, unless otherwise stated
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: slightly broken reg-ex
by jcpunk (Friar) on Jul 02, 2003 at 15:22 UTC |