Skip to content

Commit d828960

Browse files
committed
feat(isMobilePhone): add phone number validation for multiple new locales and alternative codes
1 parent 72573b3 commit d828960

1 file changed

Lines changed: 45 additions & 0 deletions

File tree

src/lib/isMobilePhone.js

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,36 @@ const phones = {
162162
'ar-EH': /^(\+?212|0)[\s\-]?(5288|5289)[\s\-]?\d{5}$/,
163163
'fa-AF': /^(\+93|0)?(2{1}[0-8]{1}|[3-5]{1}[0-4]{1})(\d{7})$/,
164164
'mk-MK': /^(\+?389|0)?((?:2[2-9]\d{6}|(?:3[1-4]|4[2-8])\d{6}|500\d{5}|5[2-9]\d{6}|7[0-9][2-9]\d{5}|8[1-9]\d{6}|800\d{5}|8009\d{4}))$/,
165+
'en-AS': /^(\+?1|0)684\d{7}$/, // American Samoa
166+
'aq-AQ': /^(\+?672|0)?\d{8}$/, // Antarctica (limited coverage)
167+
'en-BB': /^(\+?1|0)246\d{7}$/, // Barbados
168+
'en-BZ': /^(\+?501|0)?[67]\d{6}$/, // Belize
169+
'nl-BQ': /^(\+?599|0)?[79]\d{6}$/, // Bonaire, Sint Eustatius and Saba
170+
'no-BV': /^(\+?47|0)?\d{8}$/, // Bouvet Island (uses Norway's system)
171+
'en-IO': /^(\+?246|0)?\d{7}$/, // British Indian Ocean Territory
172+
'ms-BN': /^(\+?673|0)?[1-9]\d{6}$/, // Brunei Darussalam
173+
'rn-BI': /^(\+?257|0)?[67]\d{7}$/, // Burundi
174+
'pt-CV': /^(\+?238|0)?[59]\d{6}$/, // Cabo Verde
175+
'km-KH': /^(\+?855|0)?[1-9]\d{7}$/, // Cambodia
176+
'en-KY': /^(\+?1|0)345\d{7}$/, // Cayman Islands
177+
'ar-TD': /^(\+?235|0)?[1-9]\d{7}$/, // Chad
178+
'en-CX': /^(\+?61|0)?4\d{8}$/, // Christmas Island (uses Australia's system)
179+
'en-CC': /^(\+?61|0)?4\d{8}$/, // Cocos (Keeling) Islands (uses Australia's system)
180+
'ar-KM': /^(\+?269|0)?[3-7]\d{6}$/, // Comoros
181+
'fr-CG': /^(\+?242|0)?[1-9]\d{8}$/, // Congo
182+
'en-CK': /^(\+?682|0)?[2-9]\d{4}$/, // Cook Islands
183+
'hr-HR': /^(\+?385|0)?[1-9]\d{8}$/, // Croatia
184+
'nl-CW': /^(\+?599|0)?[69]\d{6}$/, // Curaçao
185+
'fr-CI': /^(\+?225|0)?[0-9]\d{9}$/, // Côte d'Ivoire
186+
'ar-DJ': /^(\+?253|0)?[1-9]\d{7}$/, // Djibouti
187+
'en-DM': /^(\+?1|0)767\d{7}$/, // Dominica
188+
'es-GQ': /^(\+?240|0)?[1-9]\d{8}$/, // Equatorial Guinea
189+
'ti-ER': /^(\+?291|0)?[1-9]\d{6}$/, // Eritrea
190+
'en-SZ': /^(\+?268|0)?[1-9]\d{7}$/, // Eswatini
191+
'am-ET': /^(\+?251|0)?[1-9]\d{8}$/, // Ethiopia
192+
'en-FK': /^(\+?500|0)?[1-9]\d{4}$/, // Falkland Islands (Malvinas)
193+
'fr-TF': /^(\+?262|0)?[1-9]\d{8}$/, // French Southern Territories
194+
'fr-GA': /^(\+?241|0)?[1-9]\d{7}$/, // Gabon
165195
};
166196
/* eslint-enable max-len */
167197

@@ -175,6 +205,21 @@ phones['ga-IE'] = phones['en-IE'];
175205
phones['fr-CH'] = phones['de-CH'];
176206
phones['it-CH'] = phones['fr-CH'];
177207

208+
// Additional aliases for new countries
209+
phones['en-CI'] = phones['fr-CI']; // Côte d'Ivoire (alternative code)
210+
phones['en-CV'] = phones['pt-CV']; // Cabo Verde (alternative code)
211+
phones['en-KH'] = phones['km-KH']; // Cambodia (alternative code)
212+
phones['en-TD'] = phones['ar-TD']; // Chad (alternative code)
213+
phones['en-KM'] = phones['ar-KM']; // Comoros (alternative code)
214+
phones['en-CG'] = phones['fr-CG']; // Congo (alternative code)
215+
phones['en-DJ'] = phones['ar-DJ']; // Djibouti (alternative code)
216+
phones['en-GQ'] = phones['es-GQ']; // Equatorial Guinea (alternative code)
217+
phones['en-ER'] = phones['ti-ER']; // Eritrea (alternative code)
218+
phones['en-ET'] = phones['am-ET']; // Ethiopia (alternative code)
219+
phones['en-GA'] = phones['fr-GA']; // Gabon (alternative code)
220+
phones['en-BI'] = phones['rn-BI']; // Burundi (alternative code)
221+
phones['en-BN'] = phones['ms-BN']; // Brunei Darussalam (alternative code)
222+
178223
export default function isMobilePhone(str, locale, options) {
179224
assertString(str);
180225
if (options && options.strictMode && !str.startsWith('+')) {

0 commit comments

Comments
 (0)