tutorial regular online net matches example ejemplos create c# regex language-agnostic

c# - regular - Validar un número de teléfono del Reino Unido



regex matches c# (2)

¿Cómo valido un número de teléfono del Reino Unido en C # usando una expresión regular?


Bueno, el formato de un número de teléfono del Reino Unido es 0[areacode x4][numberx6] código de área 0[areacode x4][numberx6] Sin embargo, creo que los cambios por región son definitivamente aplicables para mi región que tiene un código de área de 4 dígitos de Bristol, por ejemplo, tiene un código de 3 dígitos.

No soy muy bueno en Regex, pero esto funciona para mí (en modo preg):

0[1-9]{3,4}[0-9]{6}


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úmeros adicionales, como 0203, que no es válido).

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

  • Pueden tener 10 u 11 dígitos de largo (con la excepción de algunos números especiales, pero es poco probable que necesites validarlos)

  • 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, ningún número válido comienza con 04 o 06 , pero no hay nada que impida que estos rangos entren en uso en el futuro. ( 03 ha sido puesto en uso recientemente)

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

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

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

Esto verificará números de 10 u 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 mal emparejados, ya que no estoy comprobando que solo haya un corchete de cierre. Hacer esto haría la expresión mucho más compleja, y no tengo tiempo para esto ahora, pero siento libre de agregar esto si lo desea)

Por cierto, en caso de que quiera hacer un filtrado adicional, también debería tener en cuenta las siguientes reglas:

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

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