global-phone-validator 1.0.1 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,15 +1,17 @@
1
1
  # global-phone-validator
2
2
 
3
- A reusable Node.js + TypeScript package for validating phone numbers worldwide. Supports any country using CountryCodes JSON, handles international formats (+CC), 0-prefixed, and plain digits. Includes mobile/landline detection for India and returns standardized E.164 format.
3
+ A comprehensive Node.js + TypeScript package for validating phone numbers worldwide. Supports **all countries** with **country-specific validation rules** for 50+ major countries. Handles international formats (+CC), 0-prefixed, and plain digits. Includes mobile/landline detection for India and returns standardized E.164 format.
4
4
 
5
5
  ## Features
6
6
 
7
- - ✅ **Worldwide Support**: Validates phone numbers for any country using CountryCodes JSON
7
+ - ✅ **True Global Validation**: Validates phone numbers for **all countries** with country-specific rules for 50+ major countries
8
+ - ✅ **Country-Specific Rules**: Accurate validation for US, UK, Germany, France, Australia, Brazil, China, Japan, India, and 40+ more countries
8
9
  - ✅ **Multiple Formats**: Handles international format (+CC), 0-prefixed, and plain digit formats
9
10
  - ✅ **India-Specific**: Mobile vs landline detection for Indian phone numbers
10
- - ✅ **Standardized Output**: Returns E.164 format (+CCNNNNNNNNN)
11
+ - ✅ **Standardized Output**: Returns E.164 format (+CCNNNNNNNNN) with country information
11
12
  - ✅ **TypeScript**: Fully typed with TypeScript definitions
12
13
  - ✅ **Zero Dependencies**: No external dependencies required
14
+ - ✅ **ITU-T E.164 Compliant**: Follows international telecommunication standards
13
15
 
14
16
  ## Installation
15
17
 
@@ -19,15 +21,33 @@ npm install global-phone-validator
19
21
  yarn add global-phone-validator
20
22
  ```
21
23
 
24
+ ## Try It Online
25
+
26
+ Test the package directly in your browser with RunKit:
27
+
28
+ **[▶️ Try on RunKit](https://npm.runkit.com/global-phone-validator)**
29
+
30
+ Or use this code snippet:
31
+
32
+ ```javascript
33
+ const { validatePhoneNumber } = require("global-phone-validator");
34
+
35
+ // Test various countries
36
+ validatePhoneNumber("+91 98765 43210"); // India
37
+ validatePhoneNumber("+1 555 123 4567"); // USA
38
+ validatePhoneNumber("+44 20 7946 0958"); // UK
39
+ validatePhoneNumber("+49 30 12345678"); // Germany
40
+ ```
41
+
22
42
  ## Usage
23
43
 
24
44
  ### Basic Validation
25
45
 
26
46
  ```typescript
27
- import { validatePhoneNumber } from 'global-phone-validator';
47
+ import { validatePhoneNumber } from "global-phone-validator";
28
48
 
29
49
  // International format with country code
30
- const result1 = validatePhoneNumber('+91 98765 43210');
50
+ const result1 = validatePhoneNumber("+91 98765 43210");
31
51
  console.log(result1);
32
52
  // {
33
53
  // isValid: true,
@@ -41,15 +61,15 @@ console.log(result1);
41
61
  // }
42
62
 
43
63
  // 0-prefixed format (India)
44
- const result2 = validatePhoneNumber('09876543210');
64
+ const result2 = validatePhoneNumber("09876543210");
45
65
  console.log(result2.isValid); // true
46
66
 
47
67
  // Plain digits with default country
48
- const result3 = validatePhoneNumber('9876543210', 'IN');
68
+ const result3 = validatePhoneNumber("9876543210", "IN");
49
69
  console.log(result3.isValid); // true
50
70
 
51
71
  // US number
52
- const result4 = validatePhoneNumber('+1 555 123 4567');
72
+ const result4 = validatePhoneNumber("+1 555 123 4567");
53
73
  console.log(result4);
54
74
  // {
55
75
  // isValid: true,
@@ -65,28 +85,32 @@ console.log(result4);
65
85
 
66
86
  ```typescript
67
87
  // Only accept mobile numbers
68
- const result = validatePhoneNumber('9876543210', 'IN', true);
88
+ const result = validatePhoneNumber("9876543210", "IN", true);
69
89
  console.log(result.isValid); // true (mobile number)
70
90
 
71
- const result2 = validatePhoneNumber('0123456789', 'IN', true);
91
+ const result2 = validatePhoneNumber("0123456789", "IN", true);
72
92
  console.log(result2.isValid); // false (landline number)
73
93
  ```
74
94
 
75
95
  ### Get Country Codes
76
96
 
77
97
  ```typescript
78
- import { getAllCountryCodes, getCountryDialCode, getCountryCodeByDialCode } from 'global-phone-validator';
98
+ import {
99
+ getAllCountryCodes,
100
+ getCountryDialCode,
101
+ getCountryCodeByDialCode,
102
+ } from "global-phone-validator";
79
103
 
80
104
  // Get all country codes
81
105
  const countries = getAllCountryCodes();
82
106
  console.log(countries); // Array of all countries
83
107
 
84
108
  // Get dial code for a country
85
- const dialCode = getCountryDialCode('IN');
109
+ const dialCode = getCountryDialCode("IN");
86
110
  console.log(dialCode); // '91'
87
111
 
88
112
  // Get country by dial code
89
- const country = getCountryCodeByDialCode('91');
113
+ const country = getCountryCodeByDialCode("91");
90
114
  console.log(country); // { name: 'India', dial_code: '+91', code: 'IN' }
91
115
  ```
92
116
 
@@ -97,6 +121,7 @@ console.log(country); // { name: 'India', dial_code: '+91', code: 'IN' }
97
121
  Validates a phone number and returns detailed information.
98
122
 
99
123
  **Parameters:**
124
+
100
125
  - `input` (string): Phone number in various formats
101
126
  - `defaultCountry` (string, optional): ISO country code (e.g., "IN", "US") used when country cannot be detected. Default: "IN"
102
127
  - `mobileOnly` (boolean, optional): If true, only accepts mobile numbers (currently only for India). Default: false
@@ -106,13 +131,13 @@ Validates a phone number and returns detailed information.
106
131
  ```typescript
107
132
  interface PhoneValidationResult {
108
133
  isValid: boolean;
109
- countryCode?: string; // e.g., '91'
110
- nationalNumber?: string; // e.g., '9876543210'
111
- e164?: string; // e.g., '+919876543210'
112
- isMobile?: boolean; // true if mobile (India only)
113
- isFixedLine?: boolean; // true if landline (India only)
114
- country?: string; // ISO country code, e.g., 'IN'
115
- countryName?: string; // Full country name, e.g., 'India'
134
+ countryCode?: string; // e.g., '91'
135
+ nationalNumber?: string; // e.g., '9876543210'
136
+ e164?: string; // e.g., '+919876543210'
137
+ isMobile?: boolean; // true if mobile (India only)
138
+ isFixedLine?: boolean; // true if landline (India only)
139
+ country?: string; // ISO country code, e.g., 'IN'
140
+ countryName?: string; // Full country name, e.g., 'India'
116
141
  }
117
142
  ```
118
143
 
@@ -124,9 +149,9 @@ Returns an array of all supported countries.
124
149
 
125
150
  ```typescript
126
151
  interface CountryCode {
127
- name: string; // e.g., 'India'
128
- dial_code: string; // e.g., '+91'
129
- code: string; // e.g., 'IN'
152
+ name: string; // e.g., 'India'
153
+ dial_code: string; // e.g., '+91'
154
+ code: string; // e.g., 'IN'
130
155
  }
131
156
  ```
132
157
 
@@ -135,6 +160,7 @@ interface CountryCode {
135
160
  Gets the dial code for a country.
136
161
 
137
162
  **Parameters:**
163
+
138
164
  - `countryCode` (string): ISO country code (e.g., "IN")
139
165
 
140
166
  **Returns:** `string | null` - The dial code without the + sign (e.g., "91")
@@ -144,6 +170,7 @@ Gets the dial code for a country.
144
170
  Gets country information by dial code.
145
171
 
146
172
  **Parameters:**
173
+
147
174
  - `dialCode` (string): Dial code with or without + (e.g., "91" or "+91")
148
175
 
149
176
  **Returns:** `CountryCode | null`
@@ -158,43 +185,139 @@ The package handles phone numbers in the following formats:
158
185
 
159
186
  ## Country-Specific Validation
160
187
 
161
- ### India (91)
162
- - Mobile numbers: Must start with 6, 7, 8, or 9 and be exactly 10 digits
163
- - Landline numbers: Start with 0-5 and be exactly 10 digits
164
- - Mobile/landline detection is automatically performed
165
-
166
- ### United States/Canada (1)
167
- - Must be exactly 10 digits (without country code)
188
+ The package includes **comprehensive validation rules** for **50+ major countries** with specific length and format requirements. Each country has its own validation pattern ensuring accurate phone number validation.
189
+
190
+ ### Countries with Specific Validation Rules
191
+
192
+ #### Americas
193
+
194
+ - **United States/Canada (1)**: 10 digits
195
+ - **Brazil (55)**: 10-11 digits
196
+ - **Mexico (52)**: 10 digits
197
+ - **Argentina (54)**: 10 digits
198
+ - **Chile (56)**: 9 digits
199
+ - **Colombia (57)**: 10 digits
200
+ - **Venezuela (58)**: 10 digits
201
+ - **Peru (51)**: 9 digits
202
+
203
+ #### Europe
204
+
205
+ - **United Kingdom (44)**: 10-11 digits
206
+ - **Germany (49)**: 10-11 digits
207
+ - **France (33)**: 9 digits
208
+ - **Italy (39)**: 9-10 digits
209
+ - **Spain (34)**: 9 digits
210
+ - **Netherlands (31)**: 9 digits
211
+ - **Sweden (46)**: 9 digits
212
+ - **Norway (47)**: 8 digits
213
+ - **Poland (48)**: 9 digits
214
+ - **Russia (7)**: 10 digits
215
+ - **Switzerland (41)**: 9 digits
216
+ - **Belgium (32)**: 9 digits
217
+ - **Greece (30)**: 10 digits
218
+ - **Portugal (351)**: 9 digits
219
+ - **Ireland (353)**: 9 digits
220
+ - **Czech Republic (420)**: 9 digits
221
+ - **Ukraine (380)**: 9 digits
222
+ - **And more...**
223
+
224
+ #### Asia-Pacific
225
+
226
+ - **India (91)**: 10 digits (mobile: 6-9, landline: 0-5) - Mobile/landline detection
227
+ - **China (86)**: 11 digits
228
+ - **Japan (81)**: 10-11 digits
229
+ - **South Korea (82)**: 9-10 digits
230
+ - **Australia (61)**: 9 digits
231
+ - **Indonesia (62)**: 9-11 digits
232
+ - **Philippines (63)**: 10 digits
233
+ - **Thailand (66)**: 9 digits
234
+ - **Malaysia (60)**: 9-10 digits
235
+ - **Singapore (65)**: 8 digits
236
+ - **New Zealand (64)**: 8-10 digits
237
+ - **Vietnam (84)**: 9-10 digits
238
+ - **Pakistan (92)**: 10 digits
239
+ - **Turkey (90)**: 10 digits
240
+ - **UAE (971)**: 9 digits
241
+ - **Israel (972)**: 9 digits
242
+ - **Hong Kong (852)**: 8 digits
243
+ - **Taiwan (886)**: 9 digits
244
+ - **And more...**
245
+
246
+ #### Africa & Middle East
247
+
248
+ - **South Africa (27)**: 9 digits
249
+ - **Nigeria (234)**: 10 digits
250
+ - **Kenya (254)**: 9 digits
251
+ - **Egypt (20)**: 8-10 digits
252
+ - **Morocco (212)**: 9 digits
253
+ - **Qatar (974)**: 8 digits
254
+ - **And more...**
168
255
 
169
256
  ### Other Countries
170
- - General validation: 4-15 digits
257
+
258
+ - **General validation**: 4-15 digits (ITU-T E.164 standard)
259
+ - All countries from CountryCodes.json are supported
260
+ - Falls back to general validation for countries without specific rules
171
261
 
172
262
  ## Examples
173
263
 
174
264
  ```typescript
175
- import { validatePhoneNumber } from 'global-phone-validator';
265
+ import { validatePhoneNumber } from "global-phone-validator";
176
266
 
177
267
  // Valid Indian mobile number
178
- validatePhoneNumber('+91 98765 43210');
268
+ validatePhoneNumber("+91 98765 43210");
179
269
  // { isValid: true, isMobile: true, e164: '+919876543210', ... }
180
270
 
181
271
  // Valid Indian landline
182
- validatePhoneNumber('0123456789', 'IN');
272
+ validatePhoneNumber("0123456789", "IN");
183
273
  // { isValid: true, isFixedLine: true, ... }
184
274
 
185
275
  // Invalid number
186
- validatePhoneNumber('12345');
276
+ validatePhoneNumber("12345");
187
277
  // { isValid: false }
188
278
 
189
279
  // US number
190
- validatePhoneNumber('+1 555 123 4567');
280
+ validatePhoneNumber("+1 555 123 4567");
191
281
  // { isValid: true, country: 'US', e164: '+15551234567', ... }
192
282
 
193
283
  // UK number
194
- validatePhoneNumber('+44 20 7946 0958');
284
+ validatePhoneNumber("+44 20 7946 0958");
195
285
  // { isValid: true, country: 'GB', e164: '+442079460958', ... }
286
+
287
+ // Germany number
288
+ validatePhoneNumber("+49 30 12345678");
289
+ // { isValid: true, country: 'DE', e164: '+493012345678', ... }
290
+
291
+ // France number
292
+ validatePhoneNumber("+33 1 23 45 67 89");
293
+ // { isValid: true, country: 'FR', e164: '+33123456789', ... }
294
+
295
+ // Australia number
296
+ validatePhoneNumber("+61 2 1234 5678");
297
+ // { isValid: true, country: 'AU', e164: '+61212345678', ... }
298
+
299
+ // Brazil number
300
+ validatePhoneNumber("+55 11 98765 4321");
301
+ // { isValid: true, country: 'BR', e164: '+5511987654321', ... }
302
+
303
+ // China number
304
+ validatePhoneNumber("+86 138 0013 8000");
305
+ // { isValid: true, country: 'CN', e164: '+8613800138000', ... }
306
+
307
+ // Japan number
308
+ validatePhoneNumber("+81 3 1234 5678");
309
+ // { isValid: true, country: 'JP', e164: '+81312345678', ... }
196
310
  ```
197
311
 
312
+ ## Why Use This Package?
313
+
314
+ - **Accurate**: Country-specific validation rules ensure phone numbers are validated correctly
315
+ - **Comprehensive**: Supports all countries with specific rules for 50+ major countries
316
+ - **Lightweight**: Zero dependencies, small package size
317
+ - **Type-Safe**: Full TypeScript support with comprehensive type definitions
318
+ - **Flexible**: Handles multiple input formats (international, 0-prefixed, plain digits)
319
+ - **Standardized**: Returns E.164 format for consistent phone number representation
320
+
198
321
  ## Development
199
322
 
200
323
  ```bash
@@ -208,11 +331,29 @@ npm run build
208
331
  npm test
209
332
  ```
210
333
 
334
+ ## Contributing
335
+
336
+ Contributions are welcome! Please feel free to submit a Pull Request.
337
+
338
+ ### Adding Country Validation Rules
339
+
340
+ If you'd like to add or improve validation rules for specific countries, please:
341
+
342
+ 1. Fork the repository
343
+ 2. Add the validation rule to the `validationRules` object in `src/index.ts`
344
+ 3. Update the README with the country information
345
+ 4. Submit a Pull Request
346
+
211
347
  ## License
212
348
 
213
349
  MIT
214
350
 
215
- ## Contributing
351
+ ## Links
216
352
 
217
- Contributions are welcome! Please feel free to submit a Pull Request.
353
+ - **NPM Package**: [global-phone-validator](https://www.npmjs.com/package/global-phone-validator)
354
+ - **GitHub Repository**: [AVantala/global-phone-validator](https://github.com/AVantala/global-phone-validator)
355
+ - **Issues**: [Report a bug or request a feature](https://github.com/AVantala/global-phone-validator/issues)
356
+
357
+ ## License
218
358
 
359
+ MIT
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAe,MAAM,SAAS,CAAC;AAW7D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,cAAc,GAAE,MAAa,EAC7B,UAAU,GAAE,OAAe,GAC1B,qBAAqB,CA0GvB;AAGD,YAAY,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAe,MAAM,SAAS,CAAC;AAW7D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,cAAc,GAAE,MAAa,EAC7B,UAAU,GAAE,OAAe,GAC1B,qBAAqB,CA2KvB;AAGD,YAAY,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -69,21 +69,84 @@ function validatePhoneNumber(input, defaultCountry = "IN", mobileOnly = false) {
69
69
  if (nationalNumber.length < 4 || nationalNumber.length > 15) {
70
70
  return { isValid: false };
71
71
  }
72
- // Country-specific validation
73
- if (countryCode === "91") {
74
- // India: must be exactly 10 digits (mobile: 6-9, landline: 0-5)
75
- if (!/^\d{10}$/.test(nationalNumber)) {
72
+ // Country-specific validation rules
73
+ const validationRules = {
74
+ "1": { pattern: /^\d{10}$/, minLength: 10, maxLength: 10 }, // US/Canada
75
+ "7": { pattern: /^\d{10}$/, minLength: 10, maxLength: 10 }, // Russia/Kazakhstan
76
+ "20": { pattern: /^\d{8,10}$/, minLength: 8, maxLength: 10 }, // Egypt
77
+ "27": { pattern: /^\d{9}$/, minLength: 9, maxLength: 9 }, // South Africa
78
+ "30": { pattern: /^\d{10}$/, minLength: 10, maxLength: 10 }, // Greece
79
+ "31": { pattern: /^\d{9}$/, minLength: 9, maxLength: 9 }, // Netherlands
80
+ "32": { pattern: /^\d{9}$/, minLength: 9, maxLength: 9 }, // Belgium
81
+ "33": { pattern: /^\d{9}$/, minLength: 9, maxLength: 9 }, // France
82
+ "34": { pattern: /^\d{9}$/, minLength: 9, maxLength: 9 }, // Spain
83
+ "36": { pattern: /^\d{9}$/, minLength: 9, maxLength: 9 }, // Hungary
84
+ "39": { pattern: /^\d{9,10}$/, minLength: 9, maxLength: 10 }, // Italy
85
+ "40": { pattern: /^\d{9}$/, minLength: 9, maxLength: 9 }, // Romania
86
+ "41": { pattern: /^\d{9}$/, minLength: 9, maxLength: 9 }, // Switzerland
87
+ "44": { pattern: /^\d{10,11}$/, minLength: 10, maxLength: 11 }, // UK
88
+ "45": { pattern: /^\d{8}$/, minLength: 8, maxLength: 8 }, // Denmark
89
+ "46": { pattern: /^\d{9}$/, minLength: 9, maxLength: 9 }, // Sweden
90
+ "47": { pattern: /^\d{8}$/, minLength: 8, maxLength: 8 }, // Norway
91
+ "48": { pattern: /^\d{9}$/, minLength: 9, maxLength: 9 }, // Poland
92
+ "49": { pattern: /^\d{10,11}$/, minLength: 10, maxLength: 11 }, // Germany
93
+ "51": { pattern: /^\d{9}$/, minLength: 9, maxLength: 9 }, // Peru
94
+ "52": { pattern: /^\d{10}$/, minLength: 10, maxLength: 10 }, // Mexico
95
+ "53": { pattern: /^\d{8}$/, minLength: 8, maxLength: 8 }, // Cuba
96
+ "54": { pattern: /^\d{10}$/, minLength: 10, maxLength: 10 }, // Argentina
97
+ "55": { pattern: /^\d{10,11}$/, minLength: 10, maxLength: 11 }, // Brazil
98
+ "56": { pattern: /^\d{9}$/, minLength: 9, maxLength: 9 }, // Chile
99
+ "57": { pattern: /^\d{10}$/, minLength: 10, maxLength: 10 }, // Colombia
100
+ "58": { pattern: /^\d{10}$/, minLength: 10, maxLength: 10 }, // Venezuela
101
+ "60": { pattern: /^\d{9,10}$/, minLength: 9, maxLength: 10 }, // Malaysia
102
+ "61": { pattern: /^\d{9}$/, minLength: 9, maxLength: 9 }, // Australia
103
+ "62": { pattern: /^\d{9,11}$/, minLength: 9, maxLength: 11 }, // Indonesia
104
+ "63": { pattern: /^\d{10}$/, minLength: 10, maxLength: 10 }, // Philippines
105
+ "64": { pattern: /^\d{8,10}$/, minLength: 8, maxLength: 10 }, // New Zealand
106
+ "65": { pattern: /^\d{8}$/, minLength: 8, maxLength: 8 }, // Singapore
107
+ "66": { pattern: /^\d{9}$/, minLength: 9, maxLength: 9 }, // Thailand
108
+ "81": { pattern: /^\d{10,11}$/, minLength: 10, maxLength: 11 }, // Japan
109
+ "82": { pattern: /^\d{9,10}$/, minLength: 9, maxLength: 10 }, // South Korea
110
+ "84": { pattern: /^\d{9,10}$/, minLength: 9, maxLength: 10 }, // Vietnam
111
+ "86": { pattern: /^\d{11}$/, minLength: 11, maxLength: 11 }, // China
112
+ "90": { pattern: /^\d{10}$/, minLength: 10, maxLength: 10 }, // Turkey
113
+ "91": { pattern: /^\d{10}$/, minLength: 10, maxLength: 10 }, // India
114
+ "92": { pattern: /^\d{10}$/, minLength: 10, maxLength: 10 }, // Pakistan
115
+ "93": { pattern: /^\d{9}$/, minLength: 9, maxLength: 9 }, // Afghanistan
116
+ "94": { pattern: /^\d{9}$/, minLength: 9, maxLength: 9 }, // Sri Lanka
117
+ "95": { pattern: /^\d{8,10}$/, minLength: 8, maxLength: 10 }, // Myanmar
118
+ "98": { pattern: /^\d{10}$/, minLength: 10, maxLength: 10 }, // Iran
119
+ "212": { pattern: /^\d{9}$/, minLength: 9, maxLength: 9 }, // Morocco
120
+ "213": { pattern: /^\d{9}$/, minLength: 9, maxLength: 9 }, // Algeria
121
+ "234": { pattern: /^\d{10}$/, minLength: 10, maxLength: 10 }, // Nigeria
122
+ "254": { pattern: /^\d{9}$/, minLength: 9, maxLength: 9 }, // Kenya
123
+ "351": { pattern: /^\d{9}$/, minLength: 9, maxLength: 9 }, // Portugal
124
+ "352": { pattern: /^\d{9}$/, minLength: 9, maxLength: 9 }, // Luxembourg
125
+ "353": { pattern: /^\d{9}$/, minLength: 9, maxLength: 9 }, // Ireland
126
+ "354": { pattern: /^\d{7,9}$/, minLength: 7, maxLength: 9 }, // Iceland
127
+ "358": { pattern: /^\d{6,10}$/, minLength: 6, maxLength: 10 }, // Finland
128
+ "380": { pattern: /^\d{9}$/, minLength: 9, maxLength: 9 }, // Ukraine
129
+ "420": { pattern: /^\d{9}$/, minLength: 9, maxLength: 9 }, // Czech Republic
130
+ "421": { pattern: /^\d{9}$/, minLength: 9, maxLength: 9 }, // Slovakia
131
+ "852": { pattern: /^\d{8}$/, minLength: 8, maxLength: 8 }, // Hong Kong
132
+ "853": { pattern: /^\d{8}$/, minLength: 8, maxLength: 8 }, // Macau
133
+ "886": { pattern: /^\d{9}$/, minLength: 9, maxLength: 9 }, // Taiwan
134
+ "971": { pattern: /^\d{9}$/, minLength: 9, maxLength: 9 }, // UAE
135
+ "972": { pattern: /^\d{9}$/, minLength: 9, maxLength: 9 }, // Israel
136
+ "974": { pattern: /^\d{8}$/, minLength: 8, maxLength: 8 }, // Qatar
137
+ };
138
+ const rule = validationRules[countryCode];
139
+ if (rule) {
140
+ // Use country-specific validation
141
+ if (nationalNumber.length < rule.minLength || nationalNumber.length > rule.maxLength) {
76
142
  return { isValid: false };
77
143
  }
78
- }
79
- else if (countryCode === "1") {
80
- // US/Canada: 10 digits (without country code)
81
- if (!/^\d{10}$/.test(nationalNumber)) {
144
+ if (!rule.pattern.test(nationalNumber)) {
82
145
  return { isValid: false };
83
146
  }
84
147
  }
85
148
  else {
86
- // General validation: 4-15 digits
149
+ // General validation for countries without specific rules: 4-15 digits
87
150
  if (!/^\d{4,15}$/.test(nationalNumber)) {
88
151
  return { isValid: false };
89
152
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "global-phone-validator",
3
- "version": "1.0.1",
3
+ "version": "1.1.1",
4
4
  "description": "A reusable Node.js + TypeScript package for validating phone numbers worldwide. Supports any country using CountryCodes JSON, handles international formats (+CC), 0-prefixed, and plain digits. Includes mobile/landline detection for India and returns standardized E.164 format.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",