http://qs1969.pair.com?node_id=282341

ehdonhon has asked for the wisdom of the Perl Monks concerning the following question:

Greetings fellow monks,

I have a tricky problem, I need a regular expression that I can compare to a group of email addresses. The addresses are all in the plain vanila format user@example.com or user@subdomain.example.com The situation is that I need the regular expression to match against any address from that particular domain, or any address from any subdomain of that domain, except for one special subdomain. For this example, I'll call that domain 'bar'.

For example:
smith@example.commatches
jones@example.commatches
jones@foo.example.commatches
jones@bar.example.comdoes not match
jones@baz.example.commatches

To complicate things, I can not break this up into multiple regular expressions. Also, I can't start it with '!~'. It must look like this:

for ( @addresses ) { if ( /.../ ) { # Fill in really cool regexp here print "$_ : match\n"; } else { print "$_ : fail\n"; } }

Is what I am asking for even possible? I thought maybe I could use a zero-width negative lookahead assertion to do this, but that extends beyond my experience. All help is appreciated!