2008-08-28 26 views

Respuesta

28

La expresión regular en la respuesta aceptada no coincide con todos los números válidos del Reino Unido, ya que es demasiado restrictiva (mientras tanto, se han abierto rangos de número adicionales, como 0203, que no es válido).

números de teléfono del Reino Unido siguen reglas bastante simples:

  • Pueden ser 10 o 11 dígitos de longitud (con la excepción de algunos números especiales, pero es poco probable que tenga que validar los)

  • Consisten en un código de área seguido de un número local. El código de área varía en longitud entre tres y cinco dígitos, y la porción local del número ocupa la longitud restante de los 10 u 11 dígitos. Para todos los propósitos prácticos, nadie cita nunca solo la parte local de su número, por lo que puede ignorar la distinción ahora, excepto cómo afecta el formateo.

  • Comienzan con cero.

  • El segundo dígito puede ser cualquier cosa. Actualmente, no hay números válidos que comiencen con 04 o 06, pero no hay nada que impida que estos rangos entren en uso en el futuro. (03 se ha puesto en servicio recientemente)

  • Se pueden formatear con un conjunto de corchetes y con espacios (uno o más, en distintas posiciones), pero todos son completamente opcionales.

Por lo tanto, una expresión básica de trabajo para los números de teléfono del Reino Unido podría tener este aspecto:

/^\(?0(*\d\)?){9,10}$/ 

Esto comprobará durante 10 o 11 dígitos, comenzando con un cero, con espacios de formato entre cualquiera de los dígitos, y opcionalmente un conjunto de corchetes para el código de área.

(y sí, esto permitiría corchetes desajustados, ya que no estoy comprobando que haya solo un corchete de cierre. Hacer esto haría la expresión mucho más compleja, y no tengo tiempo para esto bien ahora, pero agrega a esto si lo desea)

Por cierto, en caso de que quiera hacer un filtrado adicional, es posible que desee tener en cuenta también las siguientes reglas:

  • números que empiezan 08, 09 y 070 son números de precios especiales, y generalmente no se darían como números privados , por lo que se puede excluir si se valida un número privado.

  • 07 los números son móviles (excepto 070; ver más arriba) por lo que se pueden excluir si se está validando específicamente para un teléfono fijo.

+0

¡Al principio con esta respuesta! –

+0

Me gustaría agregar un comentario (especialmente ahora en 2016) que llene automáticamente de las libretas de direcciones, etc. llenará los números de teléfono con el código de marcación internacional de 44 o +44 reemplazando a los primeros 0. Mi regex-foo no es fuerte lo suficiente como para modificar tu expresión regular para arreglar eso. – Jmons

Cuestiones relacionadas