Regex Polish phone number
Poland has a closed 9-digit plan with no trunk prefix: you always dial all 9 digits, with or without +48. The first two digits designate either a geographic zone (12 Kraków, 22 Warsaw) or a mobile operator (50, 51, 53, 60, 66, 69, 72, 78, 79, 88...). Not all pairs are allocated: 01, 20, 40 or 99 do not exist. The real attempts I read accept any 9 digits (CakePHP, sent.dm), or refuse separators (jquery-validation, which strips spaces first), or cover only mobiles (validator.js). Here's a pattern bounding the first two digits, compared against those attempts.
/^(?:(?:\+|00)48 ?)?(?:(?:1[2-8]|2[2-69]|3[2-49]|4[1-8]|5[0-9]|6[0-35-9]|7[1-9]|8[1-9]|9[145])(?:[ -]?[0-9]){7}|800(?:[ -]?[0-9]){6,7}|801(?:[ -]?[0-9]){6}|70[01346-8](?:[ -]?[0-9]){6})$/passes 33/33 cases
Comparison of existing patterns
Implementation
const re = new RegExp("^(?:(?:\\+|00)48 ?)?(?:(?:1[2-8]|2[2-69]|3[2-49]|4[1-8]|5[0-9]|6[0-35-9]|7[1-9]|8[1-9]|9[145])(?:[ -]?[0-9]){7}|800(?:[ -]?[0-9]){6,7}|801(?:[ -]?[0-9]){6}|70[01346-8](?:[ -]?[0-9]){6})$", "");
re.test(input);Limits
- Valide seulement la FORME : ne vérifie pas que le numéro est attribué. Seuls les deux premiers chiffres sont contrôlés, avec la liste des zones et opérateurs de l'ITU et de libphonenumber ; les troisième et quatrième chiffres (certains blocs mobiles ou 21x) ne le sont pas.
- Il n'y a pas de préfixe de tronc : les 9 chiffres se composent toujours, donc « +48 012… » et « 012… » sont rejetés. L'espace après +48 est facultative.
- Les numéros 800 (9 ou 10 chiffres), 801 et 70x sont acceptés ; les numéros anciens à 6 ou 7 chiffres (« 22 123 45 ») et le préfixe 804 ne le sont pas. Le préfixe 39 (VoIP) est accepté.
- Une espace ou un tiret facultatifs sont acceptés entre deux chiffres quelconques après les deux premiers : « 12 3 4 5 6 7 8 9 » passe.
Phone numbers for other countries
- Australian phone number
- Belgian phone number
- Brazilian phone number
- Canadian phone number
- Chinese phone number
- Dutch phone number
- French phone number
- German phone number
- Italian phone number
- Japanese phone number
- Mexican phone number
- Norwegian phone number
- South African phone number
- Spanish phone number
- Swedish phone number
- Swiss phone number
- UK phone number
- US phone number
- All phone numbers by country