Diferència entre revisions de la pàgina «M06 UF1Q4. Expressions regulars»

De wikijoan
Salta a la navegació Salta a la cerca
(Es crea la pàgina amb «=Introducció= A classe hem estat veient la teoria d'expressions regulars: *https://developer.mozilla.org/es/docs/Web/JavaScript/Guide/Regular_Expressions =Tasques a...».)
 
 
(Hi ha 8 revisions intermèdies del mateix usuari que no es mostren)
Línia 2: Línia 2:
 
A classe hem estat veient la teoria d'expressions regulars:
 
A classe hem estat veient la teoria d'expressions regulars:
 
*https://developer.mozilla.org/es/docs/Web/JavaScript/Guide/Regular_Expressions
 
*https://developer.mozilla.org/es/docs/Web/JavaScript/Guide/Regular_Expressions
 +
=Desenvolupament=
 +
Anem a fer l'exemple del codi postal. Una primera aproximació, que serà bàsicament correcta, serà:
 +
<pre>
 +
var re = /\d{5}/;
 +
</pre>
 +
Hem de comprovar la nostra expressió regular amb un '''joc de proves complet''':
 +
<pre>
 +
> cp.test(23434)
 +
true
 +
> cp.test(234344)
 +
true
 +
> cp.test(2343)
 +
false
 +
</pre>
 +
Per tant, amb el joc de proves complet hem detectat un error, i s'ha de millorar. Per exemple:
 +
<pre>
 +
var re = /^\d{5}$/;
 +
 +
> cp.test(23434)
 +
true
 +
> cp.test(234344)
 +
false
 +
> cp.test(2343)
 +
false
 +
</pre>
 +
També:
 +
<pre>
 +
> cp2.test('23434')
 +
true
 +
> cp2.test('asddf')
 +
false
 +
</pre>
 +
D'aquí la importància de fer els jocs de proves complerts. Això enllaçarà amb el que explicarem properament sobre la necessitat de fer '''tests unitaris'''.
  
 
=Tasques a realitzar=
 
=Tasques a realitzar=
Línia 14: Línia 47:
 
*lletres majúscules i minúscules.
 
*lletres majúscules i minúscules.
 
*dígits (0-9).
 
*dígits (0-9).
*caràcters no permesos: # $ % & ' * + - / = ? ^ _ ` { | } ~
+
*caràcters no permesos: # $ % & ' * + - / = ? ^ ` { | } ~. '''nota''': aquesta condició despista una mica. El que ens volen dir és que podem utilitzar els caràcters normals ('''\w''')
 
*punt (.). No pot estar al principi ni al final, que no hi hagi dos punts seguits, i que no estigui després de l'arroba
 
*punt (.). No pot estar al principi ni al final, que no hi hagi dos punts seguits, i que no estigui després de l'arroba
  
Línia 20: Línia 53:
  
 
5. Programa una funció de Javascript que funcioni com la funció ''trim'' dels String, però utilitzant expressions regulars.
 
5. Programa una funció de Javascript que funcioni com la funció ''trim'' dels String, però utilitzant expressions regulars.
 +
<pre>
 +
// Solució:
 +
function trim(cad) {
 +
return cad.replace(/^\s*|\s*$/g,'');
 +
}
  
 +
var cad = '  En un lugar de la Mancha  ';
 +
console.log(trim(cad));
 +
</pre>
 
6. Programa un script que compti el número de paraules dins una cadena (amb expressions regulars).
 
6. Programa un script que compti el número de paraules dins una cadena (amb expressions regulars).
 +
<pre>
 +
> var cad='hola1 hola2, hola3. hola4 hola5';
  
*Elimina els espais en blanc al principi i al final de la cadena.
+
> var re=/\w+/g;
*Converteix 2 o més espais en un de sol.
+
> cad.match(re)
*reemplaça els retorns de carro (''newline'') amb un espai en blanc.
+
[ 'hola1', 'hola2', 'hola3', 'hola4', 'hola5' ]
 +
</pre>
  
 
7. Programa una funció que comprovi si una IP té el format vàlid.
 
7. Programa una funció que comprovi si una IP té el format vàlid.
Línia 44: Línia 88:
  
 
=Entrega=
 
=Entrega=
Entrega al Classroom, en format pdf o google docs, dels codis generats i dels resultats obtinguts.
+
Entrega al Classroom, en format pdf o google docs, dels codis generats i dels resultats obtinguts. És a dir, l'evidència de què has executat correctament els codis en la teva màquina.
 +
 
 +
Hauràs de fer un joc de proves complert de cada cas.
 +
==Ajuda==
 +
*https://www.w3resource.com/javascript-exercises/javascript-regexp-exercises.php
  
 
{{Autor}}, octubre 2021
 
{{Autor}}, octubre 2021

Revisió de 10:38, 15 nov 2021

Introducció

A classe hem estat veient la teoria d'expressions regulars:

Desenvolupament

Anem a fer l'exemple del codi postal. Una primera aproximació, que serà bàsicament correcta, serà:

var re = /\d{5}/;

Hem de comprovar la nostra expressió regular amb un joc de proves complet:

> cp.test(23434)
true
> cp.test(234344)
true
> cp.test(2343)
false

Per tant, amb el joc de proves complet hem detectat un error, i s'ha de millorar. Per exemple:

var re = /^\d{5}$/;

> cp.test(23434)
true
> cp.test(234344)
false
> cp.test(2343)
false

També:

> cp2.test('23434')
true
> cp2.test('asddf')
false

D'aquí la importància de fer els jocs de proves complerts. Això enllaçarà amb el que explicarem properament sobre la necessitat de fer tests unitaris.

Tasques a realitzar

1. Programa un script per testejar si el primer caràcter d'una cadena és majúscula o no.

2. Programa un script per comprovar el número de la targeta de crèdit.

3. Escriu un patró que trobi (match) les adreces de correu electrònic. The personal information part contains the following ASCII characters.

  • evidentment, caràcter @
  • lletres majúscules i minúscules.
  • dígits (0-9).
  • caràcters no permesos: # $ % & ' * + - / = ? ^ ` { | } ~. nota: aquesta condició despista una mica. El que ens volen dir és que podem utilitzar els caràcters normals (\w)
  • punt (.). No pot estar al principi ni al final, que no hi hagi dos punts seguits, i que no estigui després de l'arroba

4. Programa un script per cercar una data dins d'una cadena (format dd/mm/yyyy).

5. Programa una funció de Javascript que funcioni com la funció trim dels String, però utilitzant expressions regulars.

// Solució:
function trim(cad) {
	return cad.replace(/^\s*|\s*$/g,'');
}

var cad = '  En un lugar de la Mancha   ';
console.log(trim(cad));

6. Programa un script que compti el número de paraules dins una cadena (amb expressions regulars).

> var cad='hola1 hola2, hola3. hola4 hola5';

> var re=/\w+/g;
> cad.match(re)
[ 'hola1', 'hola2', 'hola3', 'hola4', 'hola5' ]

7. Programa una funció que comprovi si una IP té el format vàlid.

8. Programa una funció que compti el número de vocals que té una cadena.

9. Programa una funció que comprovi si una URL té el format vàlid o no.

10. Programa una funció que comprovi si una cadena és alfanumèrica.

11. Programa una funció que comprovi si una cadena té el format de temps: HH:MI:SS.

12. Programa una funció que comprovi si una cadena té el format de codi postal (per ex, 08025, 5 dígits).

13. Programa una funció que comprovi si una cadena té el format de NIF.

14. Programa una funció que comprovi si una cadena té el format de número de la seguretat social.

Entrega

Entrega al Classroom, en format pdf o google docs, dels codis generats i dels resultats obtinguts. És a dir, l'evidència de què has executat correctament els codis en la teva màquina.

Hauràs de fer un joc de proves complert de cada cas.

Ajuda


creat per Joan Quintana Compte, octubre 2021