Rexact
Cheatsheet

Regex Spanish phone number

Spain has a closed 9-digit numbering plan: you always dial all 9 digits, with no trunk 0, so +34 612 345 678 and 612 345 678 are the same number. Mobiles start with 6 or 7, landlines with 8 or 9. validator.js's mobile regex writes '[6|7]': the pipe is a literal character, so '|12345678' passes. A regex from a personal repository accepts '000 000 000' and any international prefix. The spain-phone package does not handle +34 at all. Here's a pattern requiring the first digit and the +34 or 0034 prefix, compared against those attempts.

/^(?:(?:\+|00)34 ?)?[6-9](?: ?[0-9]){8}$/
passes 24/24 cases

Comparison of existing patterns

Implementation

const re = new RegExp("^(?:(?:\\+|00)34 ?)?[6-9](?: ?[0-9]){8}$", "");
re.test(input);

Limits

  • Valide seulement la FORME : ne vérifie pas que le numéro est attribué. Le motif accepte tout numéro à 9 chiffres commençant par 6 à 9, y compris des plages non attribuées ou spéciales (« 800 123 456 » gratuit, « 700 123 456 » personnel, que libphonenumber ne classe pas comme mobile).
  • Le plan est fermé à 9 chiffres : il n'y a pas de 0 de tronc, donc « 0612345678 » et « +34 0612345678 » sont rejetés. L'indicatif +34 ou 0034 est facultatif, avec une espace facultative.
  • Les espaces facultatives entre les chiffres sont une tolérance de saisie, pas une règle du plan : « 6 1 2 3 4 5 6 7 8 » passe. Normalisez le numéro en 9 chiffres avant stockage.
  • Aucune plage fictive officielle n'a été trouvée pour l'Espagne ; les exemples viennent de libphonenumber et de la suite de tests de validator.js.

Related pages