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".
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");
// 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".
// 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).
// 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.
// 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
// 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.
<ul> <li>http://coursesweb.net/html/</li> <li>http://www.marplo.net/html/</li> </ul>
.some_class { display: list-item; }
var obj = { "courses": ["php", "javascript", "ajax"] }; var jsonstr = JSON.stringify(obj); alert(jsonstr); // {"courses":["php","javascript","ajax"]}
$strhtml = '<body><div id="dv1">CoursesWeb.net</div></body>'; $dochtml = new DOMDocument(); $dochtml->loadHTML($strhtml); $elm = $dochtml->getElementById("dv1"); echo $elm->nodeValue; // CoursesWeb.net
I`m living here. - Traiesc /Locuiesc aici.
Estoy viviendo aquĆ. - Traiesc /Locuiesc aici.