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
Clic pe tag-ul care creaza celula in tabel.
<tr> <span> <td>
<table></tr>
  <td>Cell-1</td><td>Cell-2</td>
</tr></table>
Indicati proprietatea CSS care adauga o imagine pentru fundal
background-color background-image color
h3 {
  background-image: url("image.jpg");
}
Ce instructiune se foloseste la parcugerea elementelor unui Array?
for() [) object()
var arr = [1, "ab", "CoursesWeb.net"];
for(var i=0; i< arr.length; i++) { alert(arr[i]); };
Indicati functia PHP utilizata la parcurgerea elementelor unui Array asociativ.
for() foreach() if()
$arr =["k1"=>"v1", "k2"=>"v2", "k3"=>"v3");
foreach($arr AS $k => $v) { echo "<br/>". $k ." - ". $v; }
Care din urmatoarele cuvinte este sinonim cu "gentle" (bland)?
meek good beautiful
He is so kind and meek.
- El este atat de amabil si bland.
Care din urmatoarele cuvinte este sinonim cu "amable" (bland, prietenos)?
hermoso fuerte manso
Tu padre tiene un carácter muy manso.
- Tatal tau are un caracter foarte bland.
RegExp - Expresii regulate in ActionScript

Last accessed pages

  1. Curs si Tutoriale JavaScript (45469)
  2. Viitorul - Verbul la viitor (2584)
  3. Gramatica limbii spaniole. Indrumator si prezentare generala (34852)
  4. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (113254)
  5. Conditional (1320)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (6538)
  2. Curs HTML gratuit Tutoriale HTML5 (5749)
  3. Curs si Tutoriale JavaScript (4438)
  4. Curs PHP MySQL, Tutoriale si Scripturi PHP (4303)
  5. Curs CSS Online Tutoriale CSS3 (4126)