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