Curs Flash

Inainte de a prezenta modul de lucru cu RegExp in ActionScript, iata pe scurt cateva notiuni introductive, de baza, despre Expresiile regulate (RegExp - Regular Expresions). Acestea sunt un sir de caractere sablon care descriu multimea cuvintelor posibile care pot fi formate cu acele caractere, respectand anumite reguli. Aceste expresii regulate folosesc paranteze (rotunde, patrate, acolade) prin care formeaza regulile de formare a cuvintelor. Utilitatea cea mai frecventa a unei expresii regulate consta in a recunoaste daca un sir contine sau nu caractere, cuvinte sau sub-sir care se incadreaza in tiparul format prin expresia regulata respectiva.
        De ex.: expresia c[eo]r poate forma cuvintele: cer si cor
Un sablon pentru siruri care sa contina doar vocale se poate face utilizand expresia [aeiou] (incluzand valorile posibile intre paranteze). Daca se doreste si permiterea majusculelor, se adauga si acestea [aeiouAEIOU] (sau se poate folosi modificatorul "i", /[aeiou]/i, despre modificatori, mai jos).
Pentru siruri care pot include orice litera scrisa cu minuscule, puteti scrie: [abcdefghijklmnopqrstuvwxyz]. Sau o forma mai compacta [a-z], unde prin cratima "-" se intelege "o serie de caractere consecutive de la 'a' la 'z'".
        Similar, tiparul [0-9] reprezinta siruri care contin doar numere.
- Pentru a specifica numarul de caractere pe care un sir il poate contine, din cele incluse in RegExp, se adauga o pereche de acolade in care se includ minimul si maximul numarului de caractere permis.
        De exemplu, expresia regulata [aeiou]{1,3} corespunde sirurilor care sunt formate din 1, 2 si 3 vocale.
- Pentru a specifica repetarea mai multor parti ale unei expresii regulate, se includ partile respective intre paranteze rotunde.
        De exemplu, ([sm]at){1 ,2} corespunde unui numar de una sau doua repetari ale oricaruia dintre sirurile "sat", "mat".


Exista mai multe caractere speciale care se folosesc la formarea expresiei regulate.
- Daca un accent circumflex (^) este primul simbol mentionat intre parantezele drepte, acesta are ca efect inversarea semnificatiei expresiei regulate plasate intre paranteze.
        De exemplu, [^a-z] corespunde oricarui caracter care nu este o litera mica.
Cand acest caracter este pus in afara parantezelor drepte, el reprezinta inceput de sir sau de linie.
        Expresia regulata ^[sm]at corespunde sub-sirurilor "sat" sau "mat" numai daca acestea apar la inceputul sirului subiect.
Similar, pentru a forma o expresie regulata ce corespunde numai unui sir care include anumite caractere la sfarsit, se foloseste un simbol al dolarului "$".
        De exemplu, pa[nr]a$ corespunde sirurilor "pana" sau "para" numai daca acestea apar la sfarsitul sirului subiect.

• Iata o lista cu mai multe caractere speciale si rolul lor in expresiile regulate: - De ex.: [ca|ma]sa corespunde cuvintelor: casa si masa.
- Pentru a adauga aceste caractere in sablonul RegExp, dezactivand rolul lor special, trebuie prefixate cu un caracter backslash (\).
        De ex.: [0-9]\*[0-9] reprezinta o inmultire intre doua numere (* nu mai e factor de repetitie).

• Pe langa aceste caractere exista si formule speciale pentru scurtarea expresiei RegExp: - De exemplu: [\d\s]+ se potriveste sirurilor ce contin doar numere si spatii.

Iata cateva exemple de expresii regulate:
In afara de caracterele speciale si formule de scurtare a expresiei se folosesc si modificatori. Acestia sunt cei listati mai jos; ei modifica interpretarea expresiei regulate. - Acestia se adauga (unul sau mai multi) la sfarsitul exprexiei RegExp, de exemplu: /\d{3}-[a-z]+/gi (cauta toate sub-sirurile de forma "nnn-cuvant", 'nnn' fiind un numar de 3 cifre iar 'cuvant' poate fi si cu majuscule).

Utilizare RegExp in ActionScript 3

RegExp ( Expresii Regulate ) in ActionScript sunt instante ale clasei RegExp si pot fi definite literal (intre caracterele slash /.../) sau cu operatorul new:
                var reg1:RegExp = /expresie-regulata/g;
                var reg2:RegExp = new RegExp("expresie-regulata", "g");


Sunt 2 cai prin care expresiile regulate pot fi utilizate in ActionScript: folosind metode specifice din clasa String ("match()", "search()" "replace()"), sau proprietati si metode din clasa RegExp ("test()" si "exec()").

test() se foloseste pt. a verifica daca intr-un sir exista sub-sir care sa corespunda cu o expresie regulata, returneaza true sau false daca nu exista vreun sub-sir corespunzator expresiei. Sintaxa este:
                RegExp.test("sir")
// RegExp cu expresie ce corespunde sablonului: "cuvant-nr3" (nr3 = numar cu 3 cifre)
var reg:RegExp = /[a-z]+-\d{3}/gi;

// Sirurile care vor fi verificate
var sir1:String = 'MarPlo - Cursuri-008 si Tutoriale-137';
var sir2:String = 'AS3 Lectii-37';

// Se verifica cu test() daca in siruri exista sablonul din 'reg'
trace(reg.test(sir1));                 // true
trace(reg.test(sir2));                 // false
- Dupa cum se vede, metoda trace() arata doar daca in sir exista sau nu vreun sub-sir potrivit expresiei din variabila "reg".
- La 'sir1' returneaza true deoarece "Cursuri-008" (si "Tutoriale-037") se potriveste expresiei, dar pt. 'sir2' returneaza false (desi e asemanatoare, numarul nu are 3 cifre).

search() (apartinand clasei String) cauta sub-sirul corespunzator expresiei si returneaza un numar ce reprezinta locatia primei aparitii a lui in sir. Sintaxa este:
                Sir.search(RegExp)
// RegExp cu expresie ce corespunde sablonului: "cuvant-nr3" (nr3 = numar cu 3 cifre)
var reg:RegExp = /[a-z]+-\d{3}/gi;

// Sirurile care vor fi verificate
var sir1:String = 'MarPlo - Cursuri-008 si Tutoriale-137';
var sir2:String = 'AS3 Lectii-37';

// Cauta cu search() locatia unui sub-sir dupa expresia din 'reg'
trace(sir1.search(reg));               // 9
trace(sir2.search(reg));               // -1
- Este returnata locatia primului sub-sir din 'sir1' care corespunde expresiei din 'reg'; Cursuri-008" e gasit ca incepe de la al noualea caracter (primul are locatia 0).

exec() returneaza un obiect in care e stocat sub-sirul gasit cat si locatia lui (retinuta intr-o proprietate index). In caz contrar returneaza null. Sintaxa este:
                RegExp.exec("sir")
Pentru a gasi toate sub-sirurile corespunzatoare expresiei regulate, se combina "exec()" cu o instructiune "while", dupa cum se vede in exemplu urmator.
// RegExp cu expresie ce corespunde sablonului: "cuvant-nr3" (nr3 = numar cu 3 cifre)
var reg:RegExp = /[a-z]+-\d{3}/gi;

// Sirul care va fi verificat
var sir1:String = 'MarPlo - Cursuri-008 si Tutoriale-137';

// Variabila in care vor fi retinute rezultatele valide date de exec
var exc:Object;

// Cu exec() se verifica tot 'sir1', printr-o bucla while()
while(exc=reg.exec(sir1))
{
  trace(exc[0]+ ' = '+ exc.index);        // Returneaza:  sub_sir = locatie
}
/* Afiseaza:
  Cursuri-008 = 9
  Tutoriale-137 = 24
*/
- Daca nu se foloseste cu "while()", "exec()" retine doar primul sub-sir gasit.

match() retine intr-un Array secvential sub-sirurile gasite. Daca modificatorul "Global" (g) e adaugat, cauta in tot sirul, daca nu e specificat se opreste la primul element gasit. Daca nici un sub-sir nu e gasit, returneaza null. Sintaxa este:
                Sir.match(RegExp)
// RegExp cu expresie ce corespunde sablonului: "cuvant-nr3" (nr3 = numar cu 3 cifre)
var reg:RegExp = /[a-z]+-\d{3}/gi;

// Sirul care va fi verificat
var sir1:String = 'MarPlo - Cursuri-008 si Tutoriale-137';

// Adauga intr-o variabila tip Array sub_sirurile gasite de match() aplicat cu 'reg' la 'sir1'
var ar_matc:Array = sir1.match(reg);

// Daca 'ar_matc' are cel putin un element, afiseaza pe primul
if(ar_matc.length>0) trace(ar_matc[0]);          // Cursuri-008

replace() inlocuieste sub_sirul (sau sub_sirurile) ce corespund unei expresii RegExp cu alt continut. Daca modificatorul "Global" (g) e adaugat, cauta in tot sirul, daca nu e specificat se opreste la primul element gasit. Returneaza sirul modificat, dar nu-l afecteaza pe cel original. Sintaxa este:
                Sir.replace(RegExp, 'un_sir')
// RegExp cu expresie ce corespunde sablonului: "cuvant-nr3" (nr3 = numar cu 3 cifre)
var reg:RegExp = /[a-z]+-\d{3}/gi;

// Sirul care va fi utilizat cu replace()
var sir1:String = 'MarPlo - Cursuri-008 si Tutoriale-137';

// Adauga intr-o variabila tip String sirul rezultat dupa inlocuirea partilor ce corespund expresiei din 'reg'
var sir1_mod = sir1.replace(reg, 'alt_text');

// Verifica cu trace sirul initial si pe cel cu rezultatul modificat
trace(sir1);            // MarPlo - Cursuri-008 si Tutoriale-137
trace(sir1_mod);        // MarPlo - alt_text si alt_text
- Din rezultate se observa ca sirul original ramane neschimbat, dar se obtine si cel cu inlocuirea facuta.

Fisierul FLA cu exemple din aceasta lectie poate fi descarcat de la: RegExp - ActionScript.

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Ce tip de <input> creaza un camp de text care trebuie sa contina doar numere?
type="text" type="number" type="date"
<input type="number" name="points" min="5" max="80" />
Ce proprietate CSS permite modificarea transparentei unui element?
font-style opacity color
#id {
  filter:alpha(opacity=40);    /* for IE */
  opacity:0.4;
}
Clic pe functia care formateaza un numar la o anumita lungime de caractere.
toPrecision() exp() toFixed()
var num = 12.84567;
alert( num.toPrecision(3) );       // 12.8
Ce functie aranjeaza aleator elementele dintr-un array?
natsort() shuffle() sort()
$lang =[10=>"PHP", 20=>"JavaScript", "site"=>"coursesweb.net");
shuffle($lang);
var_export($lang);     // array (0=>"coursesweb.net", 1=>"PHP", 2=>"JavaScript")
Indicati Superlativul cuvantului "good" (bun).
better best goodest
She is the best in our class.
- Ea este cea mai buna din clasa noastra.
Care este Superlativul cuvantului "bueno" (bun)?
el mejor más bueno muy bueno
Él es el mejor en nuestra clase.
- El este cel mai bun din clasa noastra.
RegExp - Expresii regulate in ActionScript

Last accessed pages

  1. Lucrul cu mai multe cadre (3435)
  2. Notiuni fundamentale despre bazele de date SQL (10713)
  3. Metode ale obiectului String in JS (966)
  4. Less or Fewer - Exercitii Engleza (3307)
  5. Conditional IF - Exercitii si teste engleza incepatori (21031)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (259)
  2. Exercitii engleza - English Tests and exercises - Grammar (151)
  3. Cursuri limba engleza gratuite si lectii online (121)
  4. Gramatica limbii engleze - Prezentare Generala (115)
  5. Prezentul simplu - Exercitii si teste incepatori (109)