Skip to content

Commit 51b9651

Browse files
authored
Merge pull request mouredev#2896 from blackriper/main
Reto#16-kotlin
2 parents 7169119 + e44e05b commit 51b9651

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
/*
2+
3+
A una expresión regular es una cadena de caracteres que es utilizada para describir o encontrar
4+
patrones dentro de otros strings, en base a las delimitadores y ciertas reglas de sintaxis.
5+
6+
En kotlin las regex se pueden crear de tres formas:
7+
8+
Regex("a[bc]+d?") // apartir de la clase Regex
9+
10+
"a[bc]+d?".toRegex() // apartir de una cadena
11+
12+
Regex.fromLiteral("a[bc]+d?") // apartir de un metodo estatico de la clase Regex
13+
14+
para crear testear y probar expresiones regulares visita el siguiente link:
15+
https://regexr.com/
16+
17+
*/
18+
19+
fun workingWithRegex() {
20+
val regex = Regex("[0-9]")
21+
22+
val text="""
23+
El manga Hokuto no ken cuenta con 245 capítulos, publicados en la revista semanal Shōnen Jump,
24+
desde el número 41 de 1983 hasta el número 35 de 1988. Luego fue recopilado en 27 volúmenes
25+
por Shueisha. Se está publicando en 14 Kanzenban por Shōgakukan y una Master Edition de 27 volúmenes
26+
por Coamix.
27+
""".trimIndent()
28+
29+
val result = regex.findAll(text)
30+
result.forEach {
31+
println(it.value)
32+
}
33+
}
34+
35+
36+
fun validateUrl(url: String) =
37+
Regex("^(https?)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]").matches(url)
38+
39+
/* explicacion del pattern
40+
^(https?):// : debe comenzar con http o https seguido de dos puntos y dos sla
41+
[-a-zA-Z0-9+&@#/%?=~_|!:,.;]: puede contener caracteres alfanuméricos, guiones bajos, signos mas, ampersands o guiones y puede ir separado por puntos
42+
*[-a-zA-Z0-9+&@#/%=~_|]: puede contener caracteres alfanuméricos, guiones bajos, signos mas puede terminar con un slash y seguido de algun caracter especial
43+
*/
44+
45+
46+
fun validateEmail(email: String) =
47+
Regex("^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$").matches(email)
48+
49+
/* explicacion del pattern
50+
^[a-zA-Z0-9_+&*-] : debe comenzar uno o más caracteres alfanuméricos, guiones bajos, signos más, ampersands o guiones
51+
+(?:\.[a-zA-Z0-9_+&*-]+): puede contener caracteres alfanuméricos, guiones bajos, signos mas, ampersands o guiones y puede ir separado por puntos
52+
*@(?:[a-zA-Z0-9-]+\.): debe contener un arroba puede contener numeros o letras y debe terminar en un punto
53+
+[a-zA-Z]{2,7}$: debe terminar en un string de entre 2 y 7 caracteres
54+
*/
55+
56+
57+
58+
59+
fun validatePhone(phone: String) =
60+
Regex("^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*\$").matches(phone)
61+
62+
/* explicacion del pattern
63+
^[+]* : puede inicar con un signo mas
64+
[(]{0,1} : puede inicar con un parentesis
65+
[0-9]{1,4} : puede contener digitos de 0 a 9 en un rango de 1 a 4 digitos
66+
[-\s\./0-9]* : puede contener guiones o puntos entre cada numero
67+
*/
68+
69+
fun main() {
70+
workingWithRegex()
71+
validateUrl("https://www.google.com").let {
72+
println(it)
73+
}
74+
validateEmail("[email protected]").let {
75+
println(it)
76+
}
77+
78+
validatePhone("411-153-1223").let {
79+
println(it)
80+
}
81+
}

0 commit comments

Comments
 (0)