telefono telefonico solo regulares regular que probar para numeros numero mayores letras expresiones expresion espacios digitos consecutivos regex telephony ivr

regex - telefonico - probar expresiones regulares



¿Qué expresión regular coincidirá con los números de teléfono internacionales válidos? (20)

Necesito determinar si un número de teléfono es válido antes de intentar marcarlo. La llamada telefónica puede ir a cualquier parte del mundo.

¿Qué expresión regular coincidirá con los números de teléfono internacionales válidos?


Aquí hay una expresión regular para los siguientes escenarios de números telefónicos más comunes. Aunque esto se adapta desde una perspectiva de los Estados Unidos para códigos de área, funciona para escenarios internacionales.

  1. El número real debe ser de 10 dígitos solamente.
  2. Para los números de EE. UU., El código de área puede estar rodeado por paréntesis ().
  3. El código de país puede tener de 1 a 3 dígitos de longitud. Opcionalmente puede estar precedido por un signo +.
  4. Puede haber guiones, espacios, puntos o ningún espacio entre el código de país, el código de área y el resto del número.
  5. Un número de teléfono válido no puede ser todo ceros.

    ^(?!/b(0)/1+/b)(/+?/d{1,3}[. -]?)?/(?/d{3}/)?([. -]?)/d{3}/3/d{4}$

Explicación:

^ - start of expression (?!/b(0)/1+/b) - (?!)Negative Look ahead. /b - word boundary around a ''0'' character. /1 backtrack to previous capturing group (zero). Basically don''t match all zeros. (/+?/d{1,3}[. -]?)? - ''/+?'' plus sign before country code is optional./d{1,3} - country code can be 1 to 3 digits long. ''[. -]?'' - spaces,dots and dashes are optional. The last question mark is to make country code optional. /(?/d{3}/)? - ''/)?'' is to make parentheses optional. /d{3} - match 3 digit area code. ([. -]?) - optional space, dash or dot $ - end of expression

Más ejemplos y explicación: https://regex101.com/r/hTH8Ct/2/


Aquí hay una versión "optimizada" de su expresión regular:

^011(9[976]/d|8[987530]/d|6[987]/d|5[90]/d|42/d|3[875]/d| 2[98654321]/d|9[8543210]|8[6421]|6[6543210]|5[87654321]| 4[987654310]|3[9643210]|2[70]|7|1)/d{0,14}$

Puede reemplazar los /d s con [0-9] si su sintaxis de expresiones regulares no es compatible con /d .



El plan de numeración internacional se basa en el plan de numeración E.164 la UIT. Supongo que ese es el punto de partida para tu expresión regular.

Lo actualizaré si me muevo para crear una expresión regular basada en la numeración ITU E.164.


Esta es una optimización adicional.

/+(9[976]/d|8[987530]/d|6[987]/d|5[90]/d|42/d|3[875]/d| 2[98654321]/d|9[8543210]|8[6421]|6[6543210]|5[87654321]| 4[987654310]|3[9643210]|2[70]|7|1) /W*/d/W*/d/W*/d/W*/d/W*/d/W*/d/W*/d/W*/d/W*(/d{1,2})$

(i) permite los prefijos internacionales válidos
(ii) seguido de 9 o 10 dígitos, con cualquier tipo o colocación de delímetros (excepto entre los dos últimos dígitos)

Esto coincidirá:
+ 1-234-567-8901
+ 61-234-567-89-01
+ 46-234 5678901
+1 (234) 56 89 901
+1 (234) 56-89 901
+46.234.567.8901
+1/234/567/8901


Esta expresión Regex funciona para los números de teléfono de India, Canadá, Europa, Nueva Zelanda, Australia y Estados Unidos, junto con sus códigos de país:

"^(/+(([0-9]){1,2})[-.])?((((([0-9]){2,3})[-.]){1,2}([0-9]{4,10}))|([0-9]{10}))$"


Esto funciona para mí, sin el prefijo 00, 001, 0011 etc., aunque:

/^/+*(/d{3})*[0-9,/-]{8,}/


Esto funcionará para números internacionales;

DO#:

@"^((/+/d{1,3}(-| )?/(?/d/)?(-| )?/d{1,5})|(/(?/d{2,6}/)?))(-| )?(/d{3,4})(-| )?(/d{4})(( x| ext)/d{1,5}){0,1}$"

JS:

/^((/+/d{1,3}(-| )?/(?/d/)?(-| )?/d{1,5})|(/(?/d{2,6}/)?))(-| )?(/d{3,4})(-| )?(/d{4})(( x| ext)/d{1,5}){0,1}$/


Expresión regular de @ Eric modificada: agregué una lista de todos los códigos de país (los obtuve de xxxdepy @ Github . Espero que lo encuentren útil:

/(/+|00)(297|93|244|1264|358|355|376|971|54|374|1684|1268|61|43|994|257|32|229|226|880|359|973|1242|387|590|375|501|1441|591|55|1246|673|975|267|236|1|61|41|56|86|225|237|243|242|682|57|269|238|506|53|5999|61|1345|357|420|49|253|1767|45|1809|1829|1849|213|593|20|291|212|34|372|251|358|679|500|33|298|691|241|44|995|44|233|350|224|590|220|245|240|30|1473|299|502|594|1671|592|852|504|385|509|36|62|44|91|246|353|98|964|354|972|39|1876|44|962|81|76|77|254|996|855|686|1869|82|383|965|856|961|231|218|1758|423|94|266|370|352|371|853|590|212|377|373|261|960|52|692|389|223|356|95|382|976|1670|258|222|1664|596|230|265|60|262|264|687|227|672|234|505|683|31|47|977|674|64|968|92|507|64|51|63|680|675|48|1787|1939|850|351|595|970|689|974|262|40|7|250|966|249|221|65|500|4779|677|232|503|378|252|508|381|211|239|597|421|386|46|268|1721|248|963|1649|235|228|66|992|690|993|670|676|1868|216|90|688|886|255|256|380|598|1|998|3906698|379|1784|58|1284|1340|84|678|681|685|967|27|260|263)(9[976]/d|8[987530]/d|6[987]/d|5[90]/d|42/d|3[875]/d|2[98654321]/d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)/d{4,20}$/


Lo he usado a continuación:

^(/+|00)[0-9]{1,3}[0-9]{4,14}(?:x.+)?$

El formato + CCC.NNNNNNNNNNxEEEE o 00CCC.NNNNNNNNNNxEEEE

El número de teléfono debe comenzar con ''+'' o ''00'' para una llamada internacional. donde C es el código de país de 1-3 dígitos,

N tiene hasta 14 dígitos,

y E es la extensión (opcional).

Se requiere el signo más y el punto siguiendo el código de país. El carácter literal "x" es obligatorio solo si se proporciona una extensión.


Obviamente, hay una multitud de formas de hacerlo, como lo demuestran todas las diferentes respuestas dadas hasta ahora, pero arrojaré mi valor de $ 0.02 aquí y proporcionaré la siguiente expresión regular, que es un poco más concisa que casi todo lo anterior , pero más completo que la mayoría también. También tiene el agradable efecto secundario de dejar el código de país en $ 1 y el número local en $ 2.

^ / + (? = / d {5,15} $) (1 | 2 [078] | 3 [0-469] | 4 [013-9] | 5 [1-8] | 6 [0-6] | 7 | 8 [1-469] | 9 [0-58] | [2-9] ..) (/ d +) $


Para iOS SWIFT , encontré esto útil,

let phoneRegEx = "^((//+)|(00)|(//*)|())[0-9]{3,14}((//#)|())$"


Pruebe esto, no sé si hay un número de teléfono más largo que 12:

^(00|/+){1}/d{12}$



Puede usar la biblioteca libphonenumber de Google.

PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance(); String decodedNumber = null; PhoneNumber number; try { number = phoneNumberUtil.parse(encodedHeader, null); decodedNumber = phoneNumberUtil.format(number, PhoneNumberFormat.E164); } catch (NumberParseException e) { e.printStackTrace(); }


Todos los códigos de países están definidos por la UIT. La siguiente expresión regular se basa en el UIT-T E.164 y el Anexo del Boletín de Explotación de la UIT N. ° 930 - 15.IV.2009 . Contiene todos los códigos de país actuales y códigos reservados para uso futuro. Aunque podría acortarse un poco, decidí incluir cada código de forma independiente.

Esto es para llamadas provenientes de los Estados Unidos. Para otros países, reemplace el código de acceso internacional (el 011 al comienzo de la expresión regular) con lo que sea apropiado para el plan de marcado de ese país.

Además, tenga en cuenta que ITU E.164 define la longitud máxima de un número de teléfono internacional completo a 15 dígitos. Esto significa que un código de país de tres dígitos resulta en hasta 12 dígitos adicionales, y un código de país de 1 dígito podría contener hasta 14 dígitos adicionales. Por lo tanto, la

[0-9]{0,14}$

un final de la expresión regular.

Lo que es más importante, esta expresión regular no significa que el número sea válido: cada país define su propio plan de numeración interno. Esto solo garantiza que el código de país sea válido.

^ 011 (999 | 998 | 997 | 996 | 995 | 994 | 993 | 992 | 991 | 990 | 979 | 978 | 977 | 977 | 976 | 976 | 975 | 974 | 973 | 972 | 971 | 970 | 969 | 969 | 968 | 967 | 966 | 965 | 964 | 963 | 962 | 961 | 960 | 899 | 898 | 897 | 896 | 895 | 894 | 894 | 893 | 892 | 891 | 890 | 889 | 888 | 887 | 886 | 885 | 884 | 883 | 882 | 881 | 880 | 879 | 878 | 877 | 876 | 875 | 874 | 873 | 872 | 871 | 870 | 859 | 858 | 857 | 856 | 855 | 855 | 854 | 853 | 852 | 851 | 850 | 839 | 838 | 837 | 836 | 835 | 834 | 833 | 832 | 831 | 830 | 809 | 808 | 807 | 806 | 805 | 804 | 803 | 802 | 801 | 800 | 699 | 698 | 697 | 696 | 695 | 694 | 693 | 692 | 691 | 690 | 689 | 688 | 687 | 686 | 685 | 684 | 683 | 682 | 681 | 680 | 679 | 678 | 677 | 676 | 675 | 674 | 673 | 672 | 671 | 670 | 599 | 598 | 597 | 596 | 595 | 594 | 593 | 592 | 591 | 590 | 509 | 508 | 507 | 506 | 505 | 504 | 503 | 502 | 501 | 500 | 429 | 428 | 427 | 426 | 425 | 424 | 423 | 422 | 421 | 420 | 389 | 388 | 387 | 386 | 385 | 384 | 383 | 382 | 381 | 380 | 379 | 378 | 377 | 376 | 375 | 374 | 373 | 372 | 371 | 370 | 359 | 358 | 357 | 356 | 355 | 354 | 353 | 352 | 351 | 350 | 299 | 298 | 297 | 296 | 295 | 294 | 293 | 292 | 291 | 290 | 289 | 288 | 287 | 286 | 285 | 284 | 284 | 283 | 282 | 281 | 280 | 269 | 268 | 267 | 266 | 265 | 264 | 263 | 262 | 261 | 260 | 259 | 258 | 257 | 256 | 255 | 254 | 253 | 252 | 251 | 250 | 249 | 248 | 247 | 246 | 245 | 244 | 243 | 242 | 241 | 240 | 239 | 238 | 237 | 236 | 235 | 234 | 233 | 232 | 231 | 230 | 229 | 228 | 227 | 2 26 | 225 | 224 | 223 | 222 | 221 | 220 | 219 | 218 | 217 | 216 | 215 | 214 | 213 | 212 | 211 | 210 | 98 | 95 | 94 | 93 | 92 | 91 | 90 | 86 | 84 | 82 | 81 | 66 | 65 | 64 | 63 | 62 | 61 | 60 | 58 | 57 | 56 | 55 | 54 | 53 | 52 | 51 | 49 | 48 | 47 | 46 | 45 | 44 | 43 | 41 | 40 | 39 | 36 | 34 | 33 | 32 | 31 | 30 | 27 | 20 | 7 | 1) [0-9] {0, 14} $


Una versión simple para números europeos, que coincide con números como 0034617393211 pero también con números largos como 004401484172842.

^0{2}[0-9]{11,}

Espero eso ayude :·)


Yo uso este:

/([0-9/s/-]{7,})(?:/s*(?:#|x/.?|ext/.?|extension)/s*(/d+))?$/

Ventajas: reconoce los inicios + o 011, permite que sea el tiempo que sea necesario y maneja muchas convenciones de extensión. (#, x, ext, extensión)


/+(9[976]/d|8[987530]/d|6[987]/d|5[90]/d|42/d|3[875]/d| 2[98654321]/d|9[8543210]|8[6421]|6[6543210]|5[87654321]| 4[987654310]|3[9643210]|2[70]|7|1)/d{1,14}$

Es el formato correcto para hacer coincidir un número de teléfono internacional genérico. Reemplacé el código de acceso internacional céntrico de la línea terrestre de Estados Unidos 011 con el identificador de código de acceso internacional estándar de ''+'', por lo que es obligatorio. También cambié el mínimo para el número nacional a al menos un dígito.

Tenga en cuenta que si ingresa números en este formato en la libreta de direcciones de su teléfono móvil, puede llamar con éxito a cualquier número en su libreta de direcciones sin importar dónde viaje. Para líneas fijas, reemplace el más con el código de acceso internacional para el país desde el que está marcando.

Tenga en cuenta que esto NO tiene en cuenta las reglas del plan numérico nacional, específicamente, permite ceros y números en lugares que los planes nacionales no permiten y también permite un número mayor que el plan numérico nacional para algunos países (por ejemplo, los EE. UU.).


public static boolean validateInternationalPhoneNumberFormat(String phone) { StringBuilder sb = new StringBuilder(200); // Country code sb.append("^(//+{1}[//d]{1,3})?"); // Area code, with or without parentheses sb.append("([//s])?(([//(]{1}[//d]{2,3}[//)]{1}[//s]?)|([//d]{2,3}[//s]?))?"); // Phone number separator can be "-", "." or " " // Minimum of 5 digits (for fixed line phones in Solomon Islands) sb.append("//d[//-//.//s]?//d[//-//.//s]?//d[//-//.//s]?//d[//-//.//s]?//d[//-//.//s]?"); // 4 more optional digits sb.append("//d?[//-//.//s]?//d?[//-//.//s]?//d?[//-//.//s]?//d?$"); return Pattern.compile(sb.toString()).matcher(phone).find(); }