Rexact
Cheatsheet

Regex numéro de téléphone polonais

La Pologne a un plan fermé à 9 chiffres, sans préfixe de tronc : on compose toujours les 9 chiffres, avec ou sans +48. Les deux premiers chiffres désignent soit une zone géographique (12 Cracovie, 22 Varsovie), soit un opérateur mobile (50, 51, 53, 60, 66, 69, 72, 78, 79, 88…). Tous les couples ne sont pas attribués : 01, 20, 40 ou 99 n'existent pas. Les tentatives réelles relues acceptent n'importe quels 9 chiffres (CakePHP, sent.dm), ou refusent les séparateurs (jquery-validation, qui retire d'abord les espaces), ou se limitent aux mobiles (validator.js). Voici un motif qui borne les deux premiers chiffres, comparé à ces tentatives.

/^(?:(?:\+|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})$/
passe 33/33 cas

Comparatif des patterns existants

Implémentation

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);

Limites

  • 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.

Numéros de téléphone d’autres pays

Pages liées