Rexact
Cheatsheet

Regex Chinese phone number

A Chinese mobile has 11 digits and starts with 1 (13 to 19); a landline is an area code preceded by 0 (010 Beijing, 021 Shanghai, 0755 Shenzhen) then 7 or 8 digits, 10 or 11 digits in total. With +86, the area code's 0 disappears. 400 and 800 numbers have 10 digits, with no zero. The real attempts I read go wrong in different ways: CakePHP's regex accepts '1' followed by any 10 digits ('10000000000') and requires a hyphen between the area code and the number; Drupal's accepts '+86' with any 11 digits; validator.js's covers only mobiles. Here's a pattern separating mobiles, landlines and 400/800 numbers, compared against those attempts.

/^(?:(?:(?:\+|00)86[ -]?)?(?:1[3-9](?:[ -]?[0-9]){9}|[48]00(?:[ -]?[0-9]){7})|(?:(?:\+|00)86[ -]?|0)(?:(?:10|2[0-57-9])(?:[ -]?[0-9]){8}|[3-9][0-9]{2}(?:[ -]?[0-9]){7,8}))$/
passes 35/35 cases

Comparison of existing patterns

Implementation

const re = new RegExp("^(?:(?:(?:\\+|00)86[ -]?)?(?:1[3-9](?:[ -]?[0-9]){9}|[48]00(?:[ -]?[0-9]){7})|(?:(?:\\+|00)86[ -]?|0)(?:(?:10|2[0-57-9])(?:[ -]?[0-9]){8}|[3-9][0-9]{2}(?:[ -]?[0-9]){7,8}))$", "");
re.test(input);

Limits

  • Valide seulement la FORME : ne vérifie pas que le numéro est attribué. Les préfixes mobiles 13 à 19 sont acceptés en bloc (libphonenumber en liste moins) ; les indicatifs de zone ne sont contrôlés que par leur premier chiffre (10, 2x sauf 26, 3xx à 9xx), pas contre la liste réelle.
  • Après +86 ou 0086, le 0 de l'indicatif de zone ne doit pas être gardé : « +86 0755… » est rejeté. Un fixe sans 0 ni +86 (« 755-12345678 ») est rejeté.
  • Les numéros 400 et 800 (10 chiffres) sont acceptés ; les numéros 95xxx, 96xxx, 1xxxx (courts), 16x (surtaxés) et 12345 ne le sont pas. Les extensions (« -1234 ») sont rejetées.
  • Le plan complet de la Chine n'a pas été relu ici (la page de l'UIT lue ne donne que les préfixes 190, 193 et 196 : mobile à 11 chiffres) ; les longueurs de fixes (7 ou 8 chiffres après l'indicatif) viennent de libphonenumber.

Phone numbers for other countries

Related pages