Rexact
Cheatsheet

Regex Norwegian phone number

Norway has a closed 8-digit plan with no trunk prefix: you always dial all 8 digits, with or without +47. A landline starts with 2, 3, 5, 6 or 7, a mobile with 4 or 9, toll-free numbers with 800 or 801. People write '22 12 34 56' (landline) or '400 12 345' (mobile). validator.js's mobile regex accepts '40' to '49' and every 9x; sent.dm's landline regex writes '[2-3,5-7]': the comma is a literal character, so ',2' prefixes pass; CakePHP's accepts any 8 digits. Here's a pattern bounding the first two digits, compared against those attempts.

/^(?:(?:\+|00)47 ?)?(?:(?:2[1-4]|3[1-3578]|5[1-35-7]|6[1-46-9]|7[0-8]|4[0156-8]|9[0-9])(?:[ -]?[0-9]){6}|(?:80[01]|810|82[09]|85[0-5]|880)(?:[ -]?[0-9]){5})$/
passes 34/34 cases

Comparison of existing patterns

Implementation

const re = new RegExp("^(?:(?:\\+|00)47 ?)?(?:(?:2[1-4]|3[1-3578]|5[1-35-7]|6[1-46-9]|7[0-8]|4[0156-8]|9[0-9])(?:[ -]?[0-9]){6}|(?:80[01]|810|82[09]|85[0-5]|880)(?:[ -]?[0-9]){5})$", "");
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 (liste de libphonenumber), pas la tranche exacte attribuée à un opérateur par Nkom.
  • Il n'y a pas de préfixe de tronc : les 8 chiffres se composent toujours, donc « +47 0 22… » est rejeté. Les numéros à 5 chiffres (02000, 0[235-9]xxx) et 04x (42, 43, 44 non alloués) sont rejetés.
  • Les préfixes mobiles 40, 41, 45 à 48 et tous les 9x sont acceptés ; 42, 43 et 44 sont rejetés comme dans libphonenumber. Le plan complet de Nkom n'a pas été relu.
  • Une espace ou un tiret facultatifs sont acceptés entre deux chiffres quelconques après les deux premiers (« 22 1 2 3 4 5 6 » passe) ; parenthèses, points et extensions sont rejetés.

Phone numbers for other countries

Related pages