Hablando de la experiencia al escribir este tipo de cosas, es realmente difícil de hacer con el 100% de fiabilidad. He escrito un código Java para hacer esto que es razonablemente bueno en el procesamiento de los datos que tenemos, pero no será aplicable en todos los países. Las preguntas que debe formular son:
¿El carácter de las asignaciones de números es coherente entre países? Los Estados Unidos usan mucho de esto (por ejemplo, 1800-GOT-MILK) pero en Australia, como un ejemplo, es bastante raro. Lo que tendría que hacer es asegurarse de que estaba haciendo la asignación correcta para el país en cuestión si varía (puede que no). No sé qué hacen los países que usan diferentes alfabetos (por ejemplo, Cyrilic en Rusia y los antiguos países del bloque oriental);
Tienes que aceptar que tu solución no será 100% y no deberías esperar que así sea. Debe adoptar un enfoque de "mejor suposición". Por ejemplo, no hay manera real de saber que 132345 es un número de teléfono válido en Australia, como lo es 1300 123 456, pero que estos son los únicos dos patrones que son para números 13xx y no son exigibles desde el extranjero;
También debe preguntar si desea validar regiones (códigos de área). Creo que EE. UU. Usa un sistema en el que el segundo dígito del código de área es un 1 o un 0. Esto puede haber sido una vez, pero no estoy seguro de si todavía se aplica. En cualquier caso, muchos otros países tendrán otras reglas. En Australia, los códigos de área válidos para teléfonos fijos y móviles (celulares) son de dos dígitos (el primero es 0). 08, 03 y 04 son todos válidos. 01 no es. ¿Cómo se puede atender eso? ¿Quieres?
Los países usan diferentes convenciones sin importar cuántos dígitos escriban. Debes decidir si quieres aceptar algo que no sea la "norma".Todos estos son comunes en Australia:
- (02) 1234 5678
- 0411 123 123 (pero nunca he visto 04 1112 3456)
- 02-1234-5678
- 1300-234-234
- +44 78 1234 1234
- +44 (0) 78 1234 1234
- + 44-78-1234-1234
- + 44- (0) 78-1234-1234
- 0011 44 78 1234 1234 (0011 es el código de marcación estándar internacional)
- (44) 078 1234 1234 (no común)
y eso es jus fuera de mi cabeza Para un país En Francia, por ejemplo, es común escribir el número de teléfono en pares de números (12 34 56 78) y lo pronuncian de la misma manera: en lugar de:
un (uno), deux (dos), trois (tres), ...
su
Douze (doce), trente-quatre (treinta y cuatro), ...
¿quieres atender a ese nivel de diferencia cultural? Asumiría que no, pero vale la pena considerar la pregunta en caso de que las reglas sean demasiado estrictas.
También algunas personas pueden agregar números de extensión en los números de teléfono, posiblemente con "ext" o una abreviatura similar. ¿Quieres atender eso?
Lo sentimos, no hay código aquí. Solo una lista de preguntas para hacerse y temas que debe considerar. Como han dicho otros, una serie de expresiones regulares puede hacer mucho de lo anterior pero, en última instancia, los campos de números de teléfono son (en su mayoría) texto de forma libre al final del día.
echa un vistazo a este sitio: http://droidprism.blogspot.com/2013/06/decision-with-international-numbers-in.html –