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
    thanks i will look into how to use that, looks pretty simple...
    jcpunk

    by the way thanks for all the help that was, is, and will be