Regex numéro de téléphone suédois
Le plan suédois de PTS compte 264 indicatifs de zone ; le 0 est le préfixe de tronc et disparaît avec +46. Un numéro compte 7 à 9 chiffres après le 0 : « 08-123 456 78 » (Stockholm), « 031-123 456 » (Göteborg), « 070-123 45 67 » (mobile, toujours 9 chiffres). Les tentatives réelles relues se limitent aux mobiles : la regex de validator.js refuse 078, celle de sent.dm suppose que les espaces et tirets ont été retirés et accepte 077 (numéro partagé), et celle de Drupal exige un format précis avec le tiret et des espaces. Voici un motif qui couvre fixes et mobiles, comparé à ces tentatives.
/^(?:(?:\+|00)46[ -]?|0)(?:7[02-9](?:[ -]?[0-9]){7}|[1-689](?:[ -]?[0-9]){6,8})$/passe 35/35 cas
Comparatif des patterns existants
| Source | pattern | Score sur le corpus | ReDoS |
|---|---|---|---|
| validator.js (sv-SE) — mobiles seulement : tout fixe refusé (« 08-123 456 78 ») ; 078 refusé (le plan cite pourtant 078x) ; accepte « 46 70… » sans + | ^(\+?46|0)[\s\-]?7[\s\-]?[02369]([\s\-]?\d){7}$ | 24 / 35 | sûr |
| sent.dm (guide du fournisseur, mobile national et international réunis) — suppose les espaces retirés : « 070-123 45 67 » rejeté, « 070-1234567 » aussi ; accepte 077 (partagé) ; refuse tout fixe | ^07[023679]\d{7}$|^\+467[023679]\d{7}$ | 16 / 35 | sûr |
| Drupal phone (7.x-1.x, phone.se.inc) — tiret obligatoire après l'indicatif national et espaces imposés : « 070-123 45 67 » passe mais « 0701234567 » et « 070-1234567 » sont rejetés ; accepte « 099-12 34 56 » ; « +46701234567 » (collé) rejeté, « +46 70 123 45 67 » accepté | ^(([+]\d{2}[ ][1-9]\d{0,2}[ ])|([0]\d{1,3}[-]))((\d{2}([ ]\d{2}){2})|(\d{3}([ ]\d{3})*([ ]\d{2})+))$ | 24 / 35 | sûr |
Implémentation
const re = new RegExp("^(?:(?:\\+|00)46[ -]?|0)(?:7[02-9](?:[ -]?[0-9]){7}|[1-689](?:[ -]?[0-9]){6,8})$", "");
re.test(input);Limites
- Valide seulement la FORME : ne vérifie pas que le numéro est attribué ni que l'indicatif de zone existe : tout premier chiffre 1-6, 8 ou 9 passe, alors que le plan de PTS liste 264 indicatifs.
- Les mobiles sont acceptés pour 070, 072 à 079 (9 chiffres) ; PTS les classe comme mobiles pour 070, 072, 073, 076, 078 et 079, tandis que 074 (radiomessagerie), 075 (personnel) et 077 (partagé) passent aussi ici. Le 071 (haut débit mobile, 13 chiffres) est rejeté.
- Après +46 ou 0046, le 0 de tronc ne doit pas être gardé : « +46 070… » est rejeté. Un tiret ou une espace facultatifs sont acceptés entre deux chiffres quelconques ; parenthèses, points et extensions sont rejetés.
- Les numéros de routage et de messagerie vocale (jusqu'à 13 chiffres, comme 025x) et les codes courts (90 XYZ, 112, 113 13, 116 XYZ…) ne sont pas acceptés.
Numéros de téléphone d’autres pays
- numéro de téléphone allemand
- numéro de téléphone américain
- numéro de téléphone australien
- numéro de téléphone belge
- numéro de téléphone brésilien
- numéro de téléphone britannique
- numéro de téléphone canadien
- numéro de téléphone chinois
- numéro de téléphone espagnol
- numéro de téléphone français
- numéro de téléphone italien
- numéro de téléphone japonais
- numéro de téléphone mexicain
- numéro de téléphone néerlandais
- numéro de téléphone norvégien
- numéro de téléphone polonais
- numéro de téléphone sud-africain
- numéro de téléphone suisse
- Tous les numéros de téléphone par pays