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
Care tag e folosit pentru a adauga liste cu definitii in element <dl>?
<dt> <dd> <li>
<dl>
 <dt>HTML</dt>
  <dd> - Hyper Text Markup Language</dd>
  <dd> - Limbaj de cod pentru pagini web</dd>
</dl>
Care proprietate CSS poate sa ascunda un element in pagina, lasand spatiu gol in locul lui?
display position visibility
#id {
  visibility: hidden;
}
Indicati evenimentul declansat cand se apasa clic pe un obiect in pagina.
onclick onmouseover onfocus
document.getElementById("id").onclick = function(){
  alert("http://www.MarPlo.net/");
}
Indicati variabila PHP ce contine datele din $_GET, $_POST si $_COOKIE.
$_SESSION $_GET $_REQUEST
if(isset($_REQUEST["id"])) {
  echo $_REQUEST["id"];
}
Care din urmatoarele cuvinte reprezinta un Verb?
lighting believe path
I believe in my path.
- Eu cred in calea mea.
Care din urmatoarele cuvinte reprezinta un Verb?
creer camino iluminaciĆ³n
creer = a crede; camino = cale /drum; iluminaciĆ³n = iluminare
RegExp - Expresii regulate in ActionScript

Last accessed pages

  1. Trecut perfect (4057)
  2. Adjectivul in limba engleza - The adjective (24130)
  3. Alphabet and Pronunciation - Alfabetul si pronuntia in limba engleza (58803)
  4. Gramatica limbii engleze - Prezentare Generala (210494)
  5. Ce sufera nu face parte din mine (20)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (1083)
  2. Curs HTML gratuit Tutoriale HTML5 (887)
  3. Coduri pt culori (626)
  4. Creare si editare pagini HTML (517)
  5. Conditional IF in Limba Engleza - Fraze Conditionale (469)
Chat
Discuta sau lasa un mesaj pt. ceilalti utilizatori
Full screenInchide