No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Teléfonos

14/29
Recursos

Aportes 90

Preguntas 11

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Para los ejemplos:

555658
56-58-11
56.58.11
56.78-98
65 09 87
76y87r98
45y78-56
78.87 65
78 54-56
+521565811
58-11-11#246
55-5632-0417
55256048p123
55256048e123

La siguiente regex hace match para todas las líneas excepto las que contiene letras que no sean ‘p’ o ‘e’ entre números.

^\+?(\d+[ \.\-pe#]?)+$

es importante a la hora de elaborar una expresión regular el tener un archivo con varios ejemplos correctos y erróneos para ir probando su validez

Luego de pensarla un rato llegué a esta expresión regular:

^(\+\d\d)?(\d[\-\. ]?){6,6}([#pe]\d{3,3})?$

Donde:

(\+\d\d)?

Se asegura que el signo “+”, si viene, sea acompañado de 2 dígitos.

(\d[\-\. ]?){6,6}

Son los 6 dígitos del número telefónico (se puede cambiar la cantidad de dígitos permitidos, claro está). Esto permite números cómo “2 1 5 3 12”, “2-11-32-1” ó “3.40 2-2 4”.

Y finalmente

([#pe]\d{3,3})?

Se asegura que si viene el signo “#” o letra “p” o “e” sea acompañada de 3 dígitos, de lo contrario no será válido el número

Espero que te haya sido útil este ejemplo para ver la solución del ejercicio desde otro punto de vista, saludos.

jajaja tiene razón Alberto Alcocer unos días atrás antes de empezar este curso veía una expresión regular y salia corriendo jajaja diciendo que sera eso xD.

¿Puedo tambien haber sido esta expresión ?

^\+?(\d{2,3}[^\da-z]?){1,3}[#pe]?\d*$

Mi Solución

^\D?(\d[ep\W]?){1,}$
^\+?\d{2,3}[^\da-z]?\d{2,3}[^\da-z]?\d{2,3}[#pe]?\d*$

“Nos vamos a dormir después de ver esto sin tomar este curso y tendríamos pesadillas”.
La manera de explicar es grandiosa, para mi de los mejores maestros en Platzi.

Con esta solución pude encontrar números telefónicos de 10 dígitos, y demás posibles combinaciones.

^\+?\d+[#pe]?[^a-z]\d.*$

555658
56-58-11
56.58.11
56.78-11
65 09 87
76y87r98
65-09-87#123
552560p123
552560e123
+571234567
+57 314 416 1089
314 416 1089
314-416.1089
314_416_1089
+573144161089
091 6114871
03 3144161089
6114871

^\+?(\d{2,3}[^a-z]?){3}([#\sep]?\d{3})?$

Mi solución:

^\+?(\d{2,3}\W?){3,4}([pe#]\d{1,3})?$

3 o 4 repeticiones de dígitos en pares (o trieadas), pueden o no tener una extensión, misma que puede ser de 1 a 3 dígitos.
.
Tengo la duda de por qué me está incluyendo ésto:

12
123
1234

Hola a todos,

Les comparto una variante de la regex que vimos en esta clase:

^\+?(\d{2,3}[^\da-zA-z]?){3,4}[ep]?\d*#?\d*$

Estaba haciendo pruebas con esta expresión, y es capaz de reconocer los siguientes formatos:

5556581111
55-56-58-11-11
55.56.58.11.11
55 56 58 11 11
55.56-58.11-11
+521565811
55-56-58-11-11#246
55-5632-0417
55256048p123
55256048e123

^+?\d{2,3} ?[^\da-z]?\d{2,3}[^\da-z]?\d{2,3}[#pe]?\d*$ con espacio o no despues del código

^+?\d{2,3}[^\da-z]?\d{2,3}[^\da-z]?\d{2,3}[#pe]?\d*$

Mi solución

[\+]?(\d+[\.\- ]?){2,2}\d+[pe#]?\d*

Este ejercicio hecho sobre todos los teléfonos/numeros, que posean exclusivamente pe# y/o empiecen por +.

^\+?([0-9].*)([#pe][^\w]?)\d.*$

456455456
1257962
123-564-89-89
455d554v65s5
+573002870996
456456466p0148
789456e56
8965412#496
+45654p564

“De la fregada” jaja y eso que cuando hicieron este curso todavía no se pasaba a que todos fueran solo de 10 dígitos. Hay quienes ni LADA ponen.

Este funcionó para mí

^(\+\d{2,3})?\d{2}\W?\d{2}\W?\d{2}([pe#]\d{3})?$
import re

fh = open(r"C:\Users\Alfonso Zapata\jupyter\Cursos\Junio 2022\Curso de expresiones regulares - platzi\REGEX-master\liners.txt", "r").read()

fh

for line in re.findall('\+?\d{2,3}[^\n]{5,14}', fh):
    print(line)
^\+?\d{2,3}[^\d]?\d{2,3}[^\d]?\d{2,3}[#pe]?\d*$

Mi solución:

^\+?(\d{1,2}[\Wpe#]?)+$

^[+52]?\d{2,2}[^a-zA-Z]?\d{2,2}[^a-zA-Z]?\d{2,2}[^a-zA-Z]?[ep$]?.*$

Para los telefonos en colombia serian como algo tipo asi:

^\+?((\d{3,4})[\W]?){3}

Esta es mi solución…

^\+?(\d{3})?(\d{2}[^\da-z]?){3}([#pe]\d*)?$

Aquí mi solución

/^\+?(\d+[\-\. #pe]?)+\d+$/
^(\+\d{2,2})?(\d{2,2}[.-]?){2,2}\d{2,2}$
^((\d{2,4}|\+)[pe\W]?){1,4}$

Works for input:

555658
56-58-11
56.58.11
56.78-98
65 09 87
76y87r98
45y78-56
78.87 65
78 54-56
+521565811
58-11-11#246
55-5632-0417
55256048p123
55256048e123

Yo hice lo siguiente siguiendo el formato de mi país (Uruguay) :

095 628 559
+598 094 845 547
+598 095 625 120
098-564-218
093.547.555
097-777-757
095a659b523

\+?\d+[\s\.\-]\+?\d+[\s\.\-]\+?\d+[\s\.\-](\+?\d+[\s\.\-])?

Con la expresión regular me hace match de todos los números exceptuando el último que no es válido.

esta solución también me funcionó, es un poco diferente

^\+?\d+\W?\d+\W?\d+[#ep]?\d*$

mañana leo esta expresion regular y seguramente tendre pesadillas

^+?(\d{2,2}?[^da-z]?){3}([#pe]?\d+)?

Un gran curso, un gran profesor, hasta ahora (al menos creo yo) que me ha quedado muy claro el uso. Antes no entendía nada y me daba miedo las Regex pero ahora, soy capaz de entender lo que dicen.
Como todo, práctica y aún faltan más clases definididas que al paso del tiempo, o las vemos aquí, o las terminaremos investigando.

Mi solución para los teléfonos es:

  • Seleccionar las líneas que inicien con un + o que inicien con un grupo de una pareja o tercia de números,
  • Seguidos o no de cualquier caracter que no sea una letra.
  • Este grupo se repetirá de 2 a 3 veces
  • Después de repetirse, continuará o no, con cualquiera de los caracteres p o e.
  • Para terminar un 0 o más números hasta llegar al final de la línea
^\+?(\d{2,3}[^A-z]?){3}[pe]?\d*$

Yo realicé lo mismo para los teléfonos de 10 digitos, hice un poco “mas corta” la regex y como dato curioso, encontré que es posible que tome tambien los saltos de lína, asi que los quité de la regex. Probé en www.regexr.com (donde tuve que activar multilinea y agregar “evitar saltos de línea”) y en VSCode. El resultado en la imagen.

Dejo el codigo y los ejemplos que utilicé:

^\+?(\d{2,3}[^\da-z]?){3,5}[#pe]?\d*$

Los ejemplos:

5556581111
55-56-58
55.56_58
55.56.58
55-09-87#123
55X56y58
552560p123
552560e123
+521565811

56-58-11-12-54
302-345-9876
+57555 6888790
302y345x9876

https://regexr.com/6ahjf

expression

^\+?[\d\.\-# pe]+$

ejemplo

555658
56-58-11
56.58.11
56.78-98
65 09 87
76y87r98
45y78-56
78.87 65
78 54-56
+521565811
58-11-11#246
55-5632-0417
55256048p123
55256048e123

Resultado positivo

555658
56-58-11
56.58.11
56.78-98
65 09 87
78.87 65
78 54-56
+521565811
58-11-11#246
55-5632-0417
55256048p123
55256048e123

resultado negativo o excluido

76y87r98
45y78-56

Otra forma podría ser:
^(\d+)(-*p?#?\d+){9,9}$|^(+)(-*p?#?\d+){9,9}$

Comparto mi forma de resolver este caso:

^\+?(\d{2,3}[^\dA-z]?){3}[#pe]?\d*$

My solución:

^\+?\d{2,2}[^\w]?[#pe]?\d{2,2}[^\w]?[#pe]?\d{2,2}$

Un gran poder conlleva una gran responsabilidad jaja

Creo que cada vez entiendo más, no se me ha hecho tan fácil pero de tanto repasar su lógica lo entiendo.

^+?(\d{2,3}\W?){2,2}\d{2,3}[#pe]?\d*$

#nuncaParesDeAprender

^\+?(\d{2,2}[\W]?){5,5}[#pe]?\d*$

Increíblemente potente, tbh

En https://regex101.com/ puedes probar las expresiones regulares para acompañar mejor el aprendizaje!

Mi solucion:

^[\+\d+]*\s?\d{3}[ -\.]?\d{3}[ -\.]?\d{2}[ -\.]?\d{2}$

Esta es mi expresión

^(\+?\d+[\s\-\.]){2}\d{3}#?e?p?\d*$

creada para estos datos

874 837 837
839.938.937
+845-938-938
039-038-938
039-038-938#123
039-038-938p123
039-038-938e123
^(\+?[\d]{2}[^a-z]?[#ep]?){3}(\d{3})?$

Me propuse hacer una expresion para detectar numeros Colombianos…
^\+?57[- ]?\d{3}[- ]?\d{3}[- ]?\d{2}[- ]?\d{2}$

^+?\d{1,}.*\d{1,}$
Para el ejercicio de explicación la anterior línea me funcionó y me parece corta.

Qué power.

Woow acá empiezo a ver de forma más "tangible" el poder y la potencia de buscar con expresiones regulsres
^\+?(\d+[-\. pe]?)*$

^+?\d{2,2}[^\da-z]?\d{2,2}[^\da-z]?\d{2,2}[#pe]?\d*$ expresión para sacar los números telefónicos

^\+?(\d+[^\da-zA-z]?){3,3}[#pe]?\d*$

^+?57[ .-]\d{3}[ -.]?\d{3}[ -._]\d{2}[ -._]*\d{2}

+57 321-364-77-80
+57 321.364.77.80
+57 3213647780
57 3213647780
+57 321 364 77 80
+57_321_364_77_80
+57.3213647780
+57-321-364-77-80
57 321,364,7780
+57321.364.77.80

\+?\d{1,2}[\s.-]?\d{1,2}[\s.-]?\d{1,2}[#pe]?\d*$ //for telephone patterns
^\+?\d{1,2}\w?[\s.-]? //include the word \w

Excelente.

Que buena explicación instructor Alberto, ahora ya no tendré pesadillas al ver este chorizo de caracteres, ya que se el significado de cada uno. Lo que faltaría seria complementarlo con anti clases para caracteres especiales como la ñ o letras con tildes, para que estas no se infiltren en la búsqueda como en este ejemplo:
  

gracias

Creo que ésta podría ser una forma más simplificada:

^(\+?\d+[\Wpe]?)+$

Mi solución al problema:

^\+?(\d+[\.# pe-]?){5,5}\d+$

Que es mejor, aceptar datos o descartar datos?

^\+?\d+[^yr]*$
^\+?\d{2,3}[^\da-z]?\d{2,3}[^\da-z]?\d{2,3}[#pe]?\d*$

Conclusión, luego de prácticas.
Usa ^ (negación). \D \W con mucho cuidado, por ejemplo: \W (incluye al salto de línea!)

"Si la vieramos recién nos despertaramos terdríamos pesadillas todo el día" Alberto Alcocer.

Una aplicación para números argentinos

Aquí va mi aporte:

^\+?(\d{2,3}[^\d\w]?){3,4}\d{2,3}[#pe]?\d*$

Hasta ahora por lo menos ya no tengo pesadillas ni salgo corriendo, vamos bien.

Aqui tengo mi solución para hacer match con numeros telefonocos de 10 dígitos y su posible extension

^\+?\d{2,3}[^\da-zA-Z]?\d{2,3}[^\da-zA-Z]?\d{2,3}[^\da-zA-Z]?\d{2,3}[^\da-zA-Z]?\d{2,3}[#pe]?\d*$

Lo probe con los siguientes datos

5556581111
55-56-58-11-11
55.56.58.11.11
55 56 58 11 11
55.56-58.11-11
0991180556
09-91-18-05-56
+5215658112
55-56-58-11-11#246
55-5632-0417
5525604855p123
5525604855e123

Comparto mi solución para teléfonos de MX

^\D?(\d+[-#pe.]?){3,6}$

bue! quien iba a decir que iba a poder armar algo asi:
^(\+54)?[\s\W]?(\(?0?((11)|(2\d{1,3})|(3\d{1,3}))\)?)

aca tengo una expresion regular que valida codigos de area de Argentina (WIP para que sea el telefono completo)
pero basicamente tengo:

+54 opcional
un 0 opcional
y despues el codigo de area pueden ser:
un 11 para la capital,
un 2 seguido de 2 o 3 digitos para la zona sur del pais
un 3 seguido de 2 o 3 digitos para la zona norte del pais

este codigo de area puede o no estar encerrado en corchetes

va quedando

^\+?(\d+\W?){1,5}[#pe]?\d*$

Esta es la solución a la que he llegado antes de verme completo el video.

^(+\d{2,3})?(\d{2,2}[^\da-z\n]?){2,2}\d{2,2}([#pe]\d+)?$

Creo que lo podriamos resumir de esta manera:

^\+?(\d{2,3}[^\da-z]?){3,3}[#pe]?\d*$
<^\+?\d{2,3}[^\da-z]?\d{2,3}[^\da-z]?\d{2,3}[#pe ]?\d*$>

Esta es mi propuesta e Regex para los telefonos

^\+?(\d+[# e p \- \.]?){3}\d+$

Creo que la expresión regular final puede ser también así no se si estoy mal:

^\+(\d{2,3}[\W]?){2,2}\d{2,3}[#pe]?\d*$

Basándome en lo que hizo el profesor, lo resolví de esta manera, que funciona para todos los casos, incluyendo números de 10 dígitos:

^\+?(\d{2,3}[^\da-z]?){3,3}[#pe]?\d*$

Utilicé esta expresión para probarla con el comando grep de unix, ya que no me acepta \d ni A-z.

También, para ser más preciso, omití el salto de linea (\n) después del separador, ya que de no hacerlo me tomaba números con saltos de linea como separador.

Palabras a evaluar

555658
56-58-11- // no cumple
56.58.11
56.78-98
65 09 87
76y87r98 // no cumple
45y78-56 // no cumple
78.87 65
78 54-56
+521565811
58-11-11#246
55-5632-0417 // no cumple
55256048p123
55256048e123

Opción No. 1

^\+?(\d{2,3}[^\da-z]?){2,2}?(\d{2,3})[#pe]?\d*$

Opción No. 2

^\+?(\d{2,3}[\W]?){2,2}?(\d{2,3})[#pe]?\d*$

Explicación

  • ^ => la linea empieza
  • \+? => puede empezar con un + o no
  • \d{2,3} => debe haber 2 o 3 dígitos
  • [^\da-z]? => no deben de haber dígitos o caracteres desde la a a la z
  • (\d{2,3}[\da-z]?){2,2} => grupo de dos
  • \d{2,3} => debe haber 2 o 3 dígitos
  • [#pe]? => pueden contener o no #, p, e
  • \d*$ => solo dígitos hasta el final de la linea

les doy 2 soluciones, una es para también tomar los números telefónicos que vienen en el archivo que se uso en clases pasadas y el otro es solo para los números que se proponen en este problema

con números de clases pasadas:

^(\+\d{2,2})?((\d{2,2}[-. ]?){3,3}\d?|(\d{2,2}[-. ]?){4,4}|(\d{3,3}[-. ]?){2,2}\d{4,4})([#pe]\d{3,3})?$

este problema:

^(\+\d{2,2})?(\d{2,2}[ \.-]?){3,3}\d?([pe#]\d{3,3})?$

((+503?))(\s?-?.?)(\b2[2-5])(\s?-?.?\d{2}){3}

503-22-83-90-586
+503-2456-82-60
50327.26.98.85
+503 25.45.00.73
503.22 93 08 93
+503 29 45 00 73

si conocen una manera de hacerla mas corta lo agradecería mucho que me explicaran por favor

12. Mis apuntes sobre: “Teléfonos”

  • 1. Ejemplo regex: Aplicando regex para buscar números telefónicos
^\+?\d{2,3}[^\da-z]?\d{2,3}[^\da-z]?\d{2,3}[^\da-z]?[#pe]?\d*$

-Explicación 1: Encuentra y selecciona [match] que sea exactamente una línea que inicie o no con el
caracter +, luego siga con dos o tres dígitos, y luego tenga o no un caracter distinto a un dígito o letra,
esto tres veces, luego tenga o no los caracteres # p e, luego tenga 0 o varios dígitos.

Con esta solución

^\+?(\d{2,3}[^\da-z]?){2}\d{2,3}[#pe]?\d*$

.

////////////////////////////////// Télefonos ///////////////////////////////////

var e = /^\+?(\d{2,3}[^\dA-z]?){2,2}\d{2,3}[#pe]?\d*$/;

// Tips: [A-z] ~ [a-zA-Z]

Hice el ejercicio del filtrado de teléfonos de esta manera:
+?\d+[ep#-.\s]?\d?

Yo lo hice de está manera

^\+?(\d{2,3}[- \.]?){2,3}([#pe]\d+)?$

Mi propuesta:

^\+?(\d{1,3}[^\da-z\n]?[#pe ]?){3,5}$