# automatically generated file, don't edit
# Copyright 2011 David Cantrell, derived from data from libphonenumber
# http://code.google.com/p/libphonenumber/
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
package Number::Phone::StubCountry::MX;
use base qw(Number::Phone::StubCountry);
use strict;
use warnings;
use utf8;
our $VERSION = 1.20170908113148;
my $formatters = [
{
'pattern' => '([358]\\d)(\\d{4})(\\d{4})',
'leading_digits' => '
33|
55|
81
'
},
{
'pattern' => '(\\d{3})(\\d{3})(\\d{4})',
'leading_digits' => '
[2467]|
3[0-2457-9]|
5[089]|
8[02-9]|
9[0-35-9]
'
},
{
'pattern' => '(1)([358]\\d)(\\d{4})(\\d{4})',
'leading_digits' => '
1(?:
33|
55|
81
)
'
},
{
'pattern' => '(1)(\\d{3})(\\d{3})(\\d{4})',
'leading_digits' => '
1(?:
[2467]|
3[0-2457-9]|
5[089]|
8[2-9]|
9[1-35-9]
)
'
}
];
my $validators = {
'pager' => '',
'personal_number' => '500\\d{7}',
'geographic' => '
(?:
33|
55|
81
)\\d{8}|
(?:
2(?:
0[01]|
2[1-9]|
3[1-35-8]|
4[13-9]|
7[1-689]|
8[1-578]|
9[467]
)|
3(?:
1[1-79]|
[2458][1-9]|
7[1-8]|
9[1-5]
)|
4(?:
1[1-57-9]|
[24-6][1-9]|
[37][1-8]|
8[1-35-9]|
9[2-689]
)|
5(?:
88|
9[1-79]
)|
6(?:
1[2-68]|
[234][1-9]|
5[1-3689]|
6[12457-9]|
7[1-7]|
8[67]|
9[4-8]
)|
7(?:
[13467][1-9]|
2[1-8]|
5[13-9]|
8[1-69]|
9[17]
)|
8(?:
2[13-689]|
3[1-6]|
4[124-6]|
6[1246-9]|
7[1-378]|
9[12479]
)|
9(?:
1[346-9]|
2[1-4]|
3[2-46-8]|
5[1348]|
[69][1-9]|
7[12]|
8[1-8]
)
)\\d{7}
',
'voip' => '',
'fixed_line' => '
(?:
33|
55|
81
)\\d{8}|
(?:
2(?:
0[01]|
2[1-9]|
3[1-35-8]|
4[13-9]|
7[1-689]|
8[1-578]|
9[467]
)|
3(?:
1[1-79]|
[2458][1-9]|
7[1-8]|
9[1-5]
)|
4(?:
1[1-57-9]|
[24-6][1-9]|
[37][1-8]|
8[1-35-9]|
9[2-689]
)|
5(?:
88|
9[1-79]
)|
6(?:
1[2-68]|
[234][1-9]|
5[1-3689]|
6[12457-9]|
7[1-7]|
8[67]|
9[4-8]
)|
7(?:
[13467][1-9]|
2[1-8]|
5[13-9]|
8[1-69]|
9[17]
)|
8(?:
2[13-689]|
3[1-6]|
4[124-6]|
6[1246-9]|
7[1-378]|
9[12479]
)|
9(?:
1[346-9]|
2[1-4]|
3[2-46-8]|
5[1348]|
[69][1-9]|
7[12]|
8[1-8]
)
)\\d{7}
',
'specialrate' => '(300\\d{7})|(900\\d{7})',
'mobile' => '
1(?:
(?:
33|
55|
81
)\\d{8}|
(?:
2(?:
2[1-9]|
3[1-35-8]|
4[13-9]|
7[1-689]|
8[1-578]|
9[467]
)|
3(?:
1[1-79]|
[2458][1-9]|
7[1-8]|
9[1-5]
)|
4(?:
1[1-57-9]|
[24-6][1-9]|
[37][1-8]|
8[1-35-9]|
9[2-689]
)|
5(?:
88|
9[1-79]
)|
6(?:
1[2-68]|
[2-4][1-9]|
5[1-3689]|
6[12457-9]|
7[1-7]|
8[67]|
9[4-8]
)|
7(?:
[13467][1-9]|
2[1-8]|
5[13-9]|
8[1-69]|
9[17]
)|
8(?:
2[13-689]|
3[1-6]|
4[124-6]|
6[1246-9]|
7[1-378]|
9[12479]
)|
9(?:
1[346-9]|
2[1-4]|
3[2-46-8]|
5[1348]|
[69][1-9]|
7[12]|
8[1-8]
)
)\\d{7}
)
',
'toll_free' => '
8(?:
00|
88
)\\d{7}
'
};
my %areanames = (
52221 => "Puebla",
52222 => "Puebla",
52223 => "Puebla",
52224 => "Puebla",
52225 => "Tlapacoyan\,\ VER",
52226 => "Altotonga\/Jalacingo\,\ VER",
52227 => "Huejotzingo\/San\ Buenaventura\ Nealtican\,\ PUE",
52228 => "Jalapa\/Tuzamapan\,\ VER",
52229 => "Veracruz\,\ VER",
52231 => "Teteles\/Teziutlan\,\ PUE",
52232 => "La\ Vigueta\/Martinez\ de\ la\ Torre\,\ VER",
52233 => "Puebla",
52235 => "Veracruz",
52236 => "Oaxaca\/Puebla",
52237 => "Puebla",
52238 => "Santiago\ Miahuatlan\/Tehuacan\,\ PUE",
52241 => "Tlaxcala",
52243 => "Puebla",
52244 => "Puebla",
52245 => "Puebla",
52246 => "Tlaxcala",
52247 => "Huamantla\/San\ Cosme\ Xalostoc\,\ TLAX",
52248 => "Puebla",
52249 => "Puebla",
52271 => "Veracruz",
52272 => "Maltrata\/Orizaba\,\ VER",
52273 => "Veracruz",
52274 => "Oaxaca",
52275 => "Puebla",
52276 => "Puebla",
52278 => "Veracruz",
52279 => "Veracruz",
52281 => "Loma\ Bonita\,\ OAX",
52282 => "Puebla\/Veracruz",
52283 => "Veracruz",
52284 => "Angel\ Rosario\ Cabada\/Lerdo\ de\ Tejada\,\ VER",
52285 => "Veracruz",
52287 => "Oaxaca",
52288 => "Veracruz",
52294 => "Veracruz",
52296 => "Veracruz",
52297 => "Alvarado\,\ VER",
52311 => "Nayarit",
52312 => "Colima\/Los\ Tepames\,\ COL",
52313 => "Colima",
52314 => "Manzanillo\/Pena\ Colorada\,\ COL",
52315 => "Jalisco",
52316 => "Jalisco",
52317 => "Autlan\/El\ Chante\,\ JAL",
52318 => "Colima\/Jalisco",
52319 => "Nayarit",
52321 => "El\ Grullo\/El\ Limon\,\ JAL",
52322 => "Jalisco",
52323 => "Nayarit",
52324 => "Nayarit",
52325 => "Acaponeta\,\ NAY",
52326 => "Jalisco",
52327 => "Nayarit",
52328 => "Michoacan",
52329 => "Nayarit",
5233 => "Guadalajara\,\ JAL",
52341 => "Ciudad\ Guzman\,\ JAL",
52342 => "Gomez\ Farias\/Sayula\,\ JAL",
52343 => "Jalisco",
52344 => "Mexticacan\/Yahualica\,\ JAL",
52345 => "Jalisco",
52346 => "Jalisco\/Zacatecas",
52347 => "Jalisco",
52348 => "Jalisco",
52349 => "Jalisco",
52351 => "Ario\ de\ Rayon\/Zamora\,\ MICH",
52352 => "La\ Piedad\,\ MICH",
52353 => "Michoacan",
52354 => "Michoacan",
52355 => "Michoacan",
52356 => "Tanhuato\/Yurecuaro\,\ MICH",
52357 => "Jalisco",
52358 => "Tamazula\/Zapoltitic\,\ JAL",
52371 => "Jalisco",
52372 => "Jalisco",
52373 => "Jalisco",
52374 => "Jalisco",
52375 => "Ameca\,\ JAL",
52376 => "Jalisco",
52377 => "Cocula\/Estipac\,\ JAL",
52378 => "Jalisco",
52379 => "Jalisco\/Michoacan",
52381 => "Cojumatlan\/San\ Jose\ de\ Gracia\,\ MICH",
52382 => "Jalisco",
52383 => "Michoacan",
52384 => "Tala\/Teuchitlan\,\ JAL",
52385 => "Jalisco",
52386 => "Jalisco",
52387 => "Jalisco",
52388 => "Jalisco",
52389 => "Nayarit",
52391 => "Jalisco",
52392 => "Jamay\/Ocotlan\,\ JAL",
52393 => "Jalisco",
52394 => "Cotija\ de\ la\ Paz\,\ MICH",
52395 => "Jalisco",
52411 => "Guanajuato",
52412 => "Guanajuato",
52413 => "Apaseo\ el\ Alto\/Apaseo\ el\ Grande\,\ GTO",
52414 => "Tequisquiapan\,\ QRO",
52415 => "San\ Miguel\ Allende\,\ GTO",
52417 => "Guanajuato",
52418 => "Dolores\ Hidalgo\/San\ Diego\ de\ la\ Union\,\ GTO",
52419 => "Guanajuato",
52421 => "Guanajuato",
52422 => "Michoacan",
52423 => "Michoacan",
52424 => "Michoacan",
52425 => "Michoacan",
52426 => "Michoacan",
52427 => "Mexico\/Quintana\ Roo",
52428 => "Ocampo\/San\ Felipe\,\ GTO",
52429 => "Guanajuato",
52431 => "Jalostotitlan\/Villa\ Obregon\,\ JAL",
52432 => "Ciudad\ Manuel\ Doblado\/Romita\,\ GTO",
52433 => "Zacatecas",
52434 => "Michoacan",
52435 => "Huetamo\/San\ Lucas\,\ MICH",
52436 => "Zacapu\,\ MICH",
52437 => "Jalisco\/Zacatecas",
52438 => "Michoacan",
52441 => "Queretaro",
52442 => "Queretaro",
52443 => "Morelia\/Tarimbaro\,\ MICH",
52444 => "San\ Luis\ Potosi\,\ SLP",
52445 => "Moroleon\,\ GTO",
52447 => "Contepec\/Maravatio\,\ MICH",
52448 => "Queretaro",
52449 => "Aguascalientes\/Jesus\ Maria\,\ AGS",
52451 => "Michoacan",
52452 => "Nuevo\ San\ Juan\ Parangaricutiro\/Uruapan\,\ MICH",
52453 => "Apatzingan\,\ MICH",
52454 => "Michoacan",
52455 => "Michoacan",
52456 => "Valle\ de\ Santiago\,\ GTO",
52457 => "Jalisco\/Zacatecas",
52458 => "Zacatecas",
52459 => "Michoacan",
52461 => "Guanajuato",
52462 => "Irapuato\,\ GTO",
52463 => "Jalpa\/Tabasco\,\ ZAC",
52464 => "Salamanca\,\ GTO",
52465 => "Aguascalientes",
52466 => "Guanajuato",
52467 => "Zacatecas",
52468 => "San\ Luis\ de\ la\ Paz\,\ GTO",
52469 => "Buenavista\ de\ Cortez\/Penjamo\,\ GTO",
52471 => "Purepero\/Tlazazalca\,\ MICH",
52472 => "Silao\,\ GTO",
52473 => "Guanajuato\,\ GTO",
52474 => "Lagos\ de\ Moreno\/Paso\ de\ Cuarenta\,\ JAL",
52475 => "Bajio\ de\ San\ Jose\/Encarnacion\ de\ Diaz\,\ JAL",
52476 => "San\ Francisco\ Del\ Rincon\,\ GTO",
52477 => "Leon\,\ GTO",
52478 => "Calera\ Victor\ Rosales\,\ ZAC",
52481 => "Ciudad\ Valles\,\ SLP",
52482 => "San\ Luis\ Potosi",
52483 => "San\ Luis\ Potosi",
52485 => "San\ Luis\ Potosi",
52486 => "San\ Luis\ Potosi",
52487 => "San\ Luis\ Potosi",
52488 => "San\ Luis\ Potosi",
52489 => "San\ Luis\ Potosi",
52492 => "Zacatecas",
52493 => "Fresnillo\,\ ZAC",
52494 => "Jerez\ de\ Garcia\ Salinas\,\ ZAC",
52495 => "Aguascalientes\/Jalisco",
52496 => "Zacatecas",
52498 => "Zacatecas",
52499 => "Jalisco\/Zacatecas",
5255 => "Mexico\ City\,\ FD",
52586 => "Tlalmanalco\,\ MEX",
52587 => "Amecameca\,\ MEX",
52588 => "Estado\ de\ Mexico",
52589 => "Juchitepec\/Ozumba\,\ MEX",
52591 => "Estado\ de\ Mexico",
52592 => "Estado\ de\ Mexico",
52593 => "Estado\ de\ Mexico",
52594 => "Estado\ de\ Mexico",
52595 => "Estado\ de\ Mexico",
52596 => "Estado\ de\ Mexico",
52599 => "Estado\ de\ Mexico",
52612 => "La\ Paz\/Todos\ Santos\,\ BCS",
52613 => "Baja\ California\ Sur",
52614 => "Chihuahua",
52615 => "Baja\ California\ Sur",
52616 => "Baja\ California",
52618 => "Colonia\ Hidalgo\/Durango\,\ DGO",
52621 => "Chihuahua",
52622 => "Guaymas\/San\ Carlos\,\ SON",
52623 => "Sonora",
52624 => "Baja\ California\ Sur",
52625 => "Chihuahua",
52626 => "Ojinaga\,\ CHIH",
52627 => "Parral\,\ CHIH",
52628 => "Chihuahua",
52629 => "Chihuahua",
52631 => "Nogales\,\ SON",
52632 => "Imuris\/Magdalena\,\ SON",
52633 => "Sonora",
52634 => "Sonora",
52635 => "Chihuahua",
52636 => "Chihuahua",
52637 => "Altar\/Caborca\,\ SON",
52638 => "Puerto\ Penasco\,\ SON",
52639 => "Chihuahua",
52641 => "Benjamin\ Hill\/Santa\ Ana\,\ SON",
52642 => "Navojoa\/Pueblo\ Mayo\,\ SON",
52643 => "Sonora",
52644 => "Sonora",
52645 => "Cananea\,\ SON",
52646 => "Baja\ California",
52647 => "Sonora",
52648 => "Boquilla\/Ciudad\ Camargo\,\ CHIH",
52649 => "Chihuahua\/Durango",
52651 => "Sonoita\,\ SON",
52652 => "Chihuahua",
52653 => "Luis\ B\.\ Sanchez\/San\ Luis\ Rio\ Colorado\,\ SON",
52656 => "Chihuahua",
52658 => "Baja\ California",
52659 => "Chihuahua",
52661 => "Primo\ Tapia\/Rosarito\,\ BCN",
52662 => "Sonora",
52665 => "Tecate\,\ BCN",
52666 => "Tijuana\,\ BCN",
52667 => "Sinoloa",
52668 => "Sinoloa",
52669 => "Sinoloa",
52671 => "Durango",
52672 => "Sinoloa",
52673 => "Sinoloa",
52674 => "Durango",
52675 => "Durango",
52676 => "Durango",
52677 => "Durango",
52686 => "Baja\ California",
52687 => "Sinoloa",
52694 => "Sinoloa",
52695 => "Sinoloa",
52696 => "Sinoloa",
52697 => "Sinoloa",
52698 => "Sinoloa",
52711 => "Mexico\/Michoacan",
52712 => "Estado\ de\ Mexico",
52713 => "Santiago\ Tianguistenco\,\ MEX",
52714 => "Estado\ de\ Mexico",
52715 => "Michoacan",
52716 => "Estado\ de\ Mexico",
52717 => "Estado\ de\ Mexico",
52718 => "Estado\ de\ Mexico",
52719 => "San\ Francisco\ Xonacatlan\/Temoaya\,\ MEX",
52721 => "Ixtapan\ de\ la\ Sal\,\ MEX",
52722 => "Estado\ de\ Mexico",
52723 => "Coatepec\ Harinas\,\ MEX",
52724 => "Luvianos\/Tejupilco\ de\ Hidalgo\,\ MEX",
52725 => "Almoloya\ de\ Juarez\/Santa\ Maria\ Del\ Monte\,\ MEX",
52726 => "Estado\ de\ Mexico",
52727 => "Guerrero",
52728 => "Lerma\/Santa\ Maria\ Atarasquillo\,\ MEX",
52729 => "Estado\ de\ Mexico",
52731 => "Morelos",
52732 => "Guerrero",
52733 => "Iguala\,\ GRO",
52734 => "Morelos",
52735 => "Cuautla\/Jonacatepec\,\ MOR",
52736 => "Guerrero",
52737 => "Morelos",
52738 => "Mixquiahuala\/Tepatepec\,\ HGO",
52739 => "Huitzilac\/Tepoztlan\,\ MOR",
52741 => "Guerrero",
52742 => "Guerrero",
52743 => "Hidalgo",
52744 => "Acapulco\/Xaltianguis\,\ GRO",
52745 => "Guerrero",
52746 => "Puebla\/Veracruz",
52747 => "Guerrero",
52748 => "Hidalgo",
52749 => "Calpulalpan\,\ TLAX",
52751 => "Morelos",
52752 => "Morelos",
52753 => "Michoacan",
52754 => "Guerrero",
52755 => "Ixtapa\/Zihuatanejo\,\ GRO",
52756 => "Chilapa\/Olinala\,\ GRO",
52757 => "Huamuxtitlan\/Tlapa\ de\ Comonfort\,\ GRO",
52758 => "Petatlan\/San\ Jeronimito\,\ GRO",
52759 => "Hidalgo",
52761 => "Hidalgo",
52762 => "Taxco\,\ GRO",
52763 => "Tezontepec\ de\ Aldama\/Tlahuelilpan\,\ HGO",
52764 => "Puebla",
52765 => "Alamo\ Temapache\/Alazan\/Potrero\ Del\ Llano\,\ VER",
52766 => "Gutierrez\ Zamora\/Tecolutla\,\ VER",
52767 => "Guerrero",
52768 => "Veracruz",
52769 => "Morelos",
52771 => "Pachuca\/Real\ Del\ Monte\,\ HGO",
52772 => "Actopan\,\ HGO",
52773 => "Hidalgo",
52774 => "Hidalgo",
52775 => "Tulancingo\,\ HGO",
52776 => "Puebla",
52777 => "Morelos",
52778 => "Hidalgo",
52779 => "Tizayuca\,\ HGO",
52781 => "Coyuca\ de\ Benitez\/San\ Jeronimo\ de\ Juarez\,\ GRO",
52782 => "Poza\ Rica\,\ VER",
52783 => "Tuxpan\,\ VER",
52784 => "Veracruz",
52785 => "Veracruz",
52786 => "Ciudad\ Hidalgo\/Tuxpan\,\ MICH",
52789 => "Veracruz",
52791 => "Ciudad\ Sahagun\,\ HGO",
52797 => "Puebla",
5281 => "Monterrey\,\ NL",
52821 => "Hualahuises\/Linares\,\ NL",
52823 => "Nuevo\ Leon",
52824 => "Sabinas\ Hidalgo\,\ NL",
52825 => "Nuevo\ Leon",
52826 => "Nuevo\ Leon",
52827 => "Santiago\,\ NL",
52828 => "Cadereyta\,\ NL",
52829 => "Nuevo\ Leon",
52831 => "Ciudad\ Mante\/Los\ Aztecas\,\ TAMPS",
52832 => "Tamaulipas",
52833 => "Tampico\,\ TAMPS",
52834 => "Ciudad\ Victoria\,\ TAMPS",
52835 => "Tamaulipas",
52836 => "Tamaulipas",
52841 => "Tamaulipas",
52842 => "Coahuila",
52844 => "Saltillo\,\ COAH",
52845 => "Ebano\/Ponciano\ Arriaga\,\ SLP",
52846 => "Veracruz",
52861 => "Nueva\ Rosita\/Sabinas\,\ COAH",
52862 => "Coahuila",
52864 => "Coahuila",
52866 => "Castanos\/Monclova\,\ COAH",
52867 => "Nuevo\ Leon\/Tamaulipas",
52868 => "Tamaulipas",
52869 => "Cuatro\ Cienegas\/San\ Buenaventura\,\ COAH",
52871 => "Coahuila",
52872 => "Coahuila\/Durango",
52873 => "Nuevo\ Leon",
52877 => "Ciudad\ Acuna\,\ COAH",
52878 => "Piedras\ Negras\,\ COAH",
52891 => "Tamaulipas",
52892 => "Nuevo\ Leon",
52894 => "Santa\ Apolonia\/Valle\ Hermoso\,\ TAMPS",
52897 => "Tamaulipas",
52899 => "Tamaulipas",
52913 => "Tabasco",
52914 => "Tabasco",
52916 => "Chiapas",
52917 => "Tabasco",
52918 => "Chiapas",
52919 => "Chiapas",
52921 => "Coatzacoalcos\/Ixhuatlan\ Del\ Sureste\,\ VER",
52922 => "Veracruz",
52923 => "Tabasco\/Veracruz",
52924 => "Veracruz",
52932 => "Chiapas\/Tabasco",
52933 => "Tabasco",
52934 => "Tabasco",
52936 => "Tabasco",
52937 => "Cardenas\,\ TAB",
52938 => "Ciudad\ Del\ Carmen\,\ CAMP",
5295 => "Oaxaca",
52961 => "Chiapas",
52962 => "Chiapas",
52963 => "Chiapas",
52964 => "Chiapas",
52965 => "Chiapas",
52966 => "Arriaga\/Tonala\,\ CHIS",
52967 => "San\ Cristobal\ de\ las\ Casas\,\ CHIS",
52968 => "Chiapas",
52969 => "Flamboyanes\/Yucalpeten\,\ YUC",
5297 => "Oaxaca",
52981 => "Campeche\,\ CAMP",
52982 => "Campeche",
52983 => "Quintana\ Roo",
52984 => "Quintana\ Roo",
52985 => "Yucatan",
52986 => "Yucatan",
52987 => "Cozumel\,\ QRO",
52988 => "Yucatan",
52991 => "Yucatan",
52992 => "Chiapas",
52993 => "Tabasco",
52994 => "Oaxaca",
52995 => "Magdalena\ Tequisistlan\/Santa\ Maria\ Jalapa\ Del\ Marquez\,\ OAX",
52996 => "Campeche",
52997 => "Yucatan",
52998 => "Quintana\ Roo",
52999 => "Conkal\/Merida\,\ YUC",
);
sub new {
my $class = shift;
my $number = shift;
$number =~ s/(^\+52|\D)//g;
my $self = bless({ number => $number, formatters => $formatters, validators => $validators, areanames => \%areanames}, $class);
return $self if ($self->is_valid());
$number =~ s/(^01)//g;
$self = bless({ number => $number, formatters => $formatters, validators => $validators, areanames => \%areanames}, $class);
return $self->is_valid() ? $self : undef;
}
1;