test-numbers-generator
Version:
Generate and validate European test phone numbers (mobile and landline) in safe, non-existent ranges.
49 lines (44 loc) • 2.96 kB
text/typescript
// Validator functions for test phone numbers
import { SupportedCountry } from './mobileNumberGenerators';
export const isTestMobileNumber: Record<SupportedCountry, (number: string) => boolean> = {
Netherlands: (number: string) => /^0031 6 \d{8}$/.test(number),
Germany: (number: string) => /^0049 01[567] \d{7}$/.test(number),
Belgium: (number: string) => /^0032 4[789] \d{7}$/.test(number), // 47/48/49 zonder nationale 0
France: (number: string) => /^0033 [67] \d{8}$/.test(number),
UnitedKingdom: (number: string) => /^0044 7 \d{9}$/.test(number),
Spain: (number: string) => /^0034 [67]\d{8}$/.test(number),
Italy: (number: string) => /^0039 3\d{2} \d{7}$/.test(number),
Austria: (number: string) => /^0043 (664|676|699) \d{7}$/.test(number), // zonder nationale 0
Switzerland: (number: string) => /^0041 7[56789] \d{6}$/.test(number), // 75/76/77/78/79 zonder nationale 0
Sweden: (number: string) => /^0046 7 \d{8}$/.test(number),
Norway: (number: string) => /^0047 [49]\d{7}$/.test(number),
Denmark: (number: string) => /^0045 (20|21|22|23|24|25|26|27|28|29|30|31)\d{6}$/.test(number), // beperkt tot 20-31
Finland: (number: string) => /^00358 (4[0-9]|50|457|59) \d{6}$/.test(number), // 40-49/50/457/59 zonder nationale 0
Portugal: (number: string) => /^00351 9[1236] \d{7}$/.test(number),
Ireland: (number: string) => /^00353 8[35679] \d{6}$/.test(number), // 83/85/86/87/89 zonder nationale 0
Turkey: (number: string) => /^0090 53[1-9] \d{6}$/.test(number), // 531-539 zonder nationale 0
Morocco: (number: string) => /^00212 [67] \d{8}$/.test(number), // 6/7 zonder nationale 0
};
export const isTestLandlineNumber: Record<SupportedCountry, (number: string) => boolean> = {
Netherlands: (number: string) => /^010 99\d{6}$/.test(number),
Germany: (number: string) => /^030 99\d{5}$/.test(number),
Belgium: (number: string) => /^02 99\d{6}$/.test(number),
France: (number: string) => /^01 99\d{6}$/.test(number),
UnitedKingdom: (number: string) => /^020 3999\d{4}$/.test(number),
Spain: (number: string) => /^91 99\d{5}$/.test(number),
Italy: (number: string) => /^06 99\d{6}$/.test(number),
Austria: (number: string) => /^01 99\d{6}$/.test(number),
Switzerland: (number: string) => /^044 99\d{6}$/.test(number),
Sweden: (number: string) => /^08 99\d{6}$/.test(number),
Norway: (number: string) => /^21 99\d{7}$/.test(number),
Denmark: (number: string) => /^33 99\d{4}$/.test(number),
Finland: (number: string) => /^09 99\d{6}$/.test(number),
Portugal: (number: string) => /^21 99\d{6}$/.test(number),
Ireland: (number: string) => /^01 99\d{6}$/.test(number),
Turkey: (number: string) => /^212 99\d{6}$/.test(number),
Morocco: (number: string) => /^0522 99\d{4}$/.test(number),
};
export function isTestPhoneNumber(number: string): boolean {
return Object.values(isTestMobileNumber).some(fn => fn(number)) ||
Object.values(isTestLandlineNumber).some(fn => fn(number));
}