use strict;
my $str = '+33 100 000 0000
000-000-0000
000 000 0000
000.000.0000
12000-000-000012
12000 000 000012
12000.000.000012
0049-000-0000
000 000 0000
000.000.0000
(000)000-0000
(000)000 0000
(000)000.0000
(000) 000-0000
(000) 000 0000
(000) 000.0000
12(000)000-000012
12(000)000 000012
12(000)000.000012
12(000) 000-000012
12(000) 000 000012
12(000) 000.000012
000-0000
000 0000
000.0000
0000000
(100)0000000
12000-000012
12000 000012
12000.000012
12000000012
12(000)000000012
+28 100 000 0000
+33 000 000 0000
+33 100 000 0000
+49 100 000 0000
+43 100 000 0000
+43.100.000.0000
+43-100-000-0000
+43 100 000 0000
+43.100.000.0000
+43-100-000-0000
+433 100 000 0000
+433.100.000.0000
+433-100-000-0000
+433000000000
0043 1000000000
0043 100000000000023
0043 100000
0043 100000000
0043 100 00 00000
0043 100 000 0000
0043-100-000-0000
00431000000000
0000-000-000-0000
00000000000000
+43 (100)000 0000
0043 (100)000-0000
0043(100)000-0000
0000 (100)000-0000
0000(100)000-0000
+43 (100) 000 0000
0043 (100) 000-0000
0043(100) 000-0000
0000 (100) 000-0000
0000(100) 000-0000
+43 (10)000 0000
0043 (10)000-0000
0043(10)000-0000
0000 (10)000-0000
0000(10)000-0000
+43 (10) 000 0000
0043 (10) 000-0000
0043(10) 000-0000
0000 (10) 000-0000
0000(10) 000-0000
0662 874278
0676 7359567
0343545435343
06700000023
12+43 100 000 000012
12+43.100.000.000012
12+43-100-000-000012
12+43100000000012
120043 100000000012
120043-100-000-000012
120043100000000012
12+43 (100)000 000012
120043 (100)000-000012
120043(100)000-000012
+49 10 000000
(000) 0000-0000
(0000) 0000-0000
(00000) 000-0000
(030000) 00-0000
01200-0000000
0137-000 0000000
01500-0000000
0160-0000000
0170-0000000
032-000000000
0700-0000000
0800-0000000
0900-0-000000
0000000000000
0000000000000
120000000000000
120000000000000
+00+00 000 0000
2013 175000km
019 55000km';
my $regex = qr/(?:^|\s)(((?:\+|0{2})(?:49|43|33)[-\. ]?|0)([1-9]\d{1,2}[-\. ]?|\([1-9]\d{1,2}\)[-\. ]?)(\d{6,9}|\d{2,3}[-\. ]\d{4,6}))/ump;
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