use strict;
my $str = 'test@email.com
test-user@email.com
test.user@email.com
33test33@email.com
test99user-_22@email.com
test@e.mail
test@g.mail
test AT email.com
test AT email DOT com
test AT email dot com
test at email.com
test@email DOT com
this is not an email @twitterUser
this is just an an string el@
Valid
-------
first.last@iana.org
1234567890123456789012345678901234567890123456789012345678901234@iana.org
x@x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x2
1234567890123456789012345678901234567890123456789012345678@12345678901234567890123456789012345678901234567890123456789.12345678901234567890123456789012345678901234567890123456789.123456789012345678901234567890123456789012345678901234567890123.iana.org
user+mailbox@iana.org
customer/department@iana.org
customer/department=shipping@iana.org
cal(woo(yay)hoopla)@iamcal.com
cal(foo\\@bar)@iamcal.com
cal(foo\\)bar)@iamcal.com
first(Welcome to the ("wonderful" (!)) world of email)@iana.org
pete(his account)@silly.test(his host)
c@(Chris\'s host.)public.example
Invalid
---------
first@...........com
first.last@sub.do,com
first\\@last@iana.org
first.last
.first.last@iana.org
first.last.@iana.org
"first"last"@iana.org
"""@iana.org
first\\\\@last@iana.org
Doug\\ \\"Ace\\"\\ Lovell@iana.org
()[]\\;:,><@iana.org
test@.
test@[123.123.123.123
test@123.123.123.123]';
my $regex = qr/(?<=\b)\w([\w\.\-_0-9])*(@| at )[\w0-9][\w\-_0-9]*((\.| DOT )[\w\-_0-9]+)+(?=\b)/mip;
if ( $str =~ /$regex/g ) {
print "Whole match is ${^MATCH} and its start/end positions can be obtained via \$-[0] and \$+[0]\n";
# print "Capture Group 1 is $1 and its start/end positions can be obtained via \$-[1] and \$+[1]\n";
# print "Capture Group 2 is $2 ... and so on\n";
}
# ${^POSTMATCH} and ${^PREMATCH} are also available with the use of '/p'
# Named capture groups can be called via $+{name}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Perl, please visit: http://perldoc.perl.org/perlre.html