Expresii regulate  


Cãutare


Siteuri recomandate

  • ABC Domenii Pachete de gazduire pentru siteuri personale si bloguri.
  • AutoIt Script Curs AutoIt in limba romana.
  • CHML Web Services Servere dedicate si servere virtuale private.
  • Hostvision Gazduire siteuri web si inregistrare domenii
  • IPFind.eu IPFind.eu – Free IP address finder and DNS troubleshooter
  • LAMP Platforma open source de gazduire a site-urilor web.
  • NetHelp Intrebari tehnice si raspunsuri de calitate pentru intrebari tehnice.
  • SkullBox Comunitate online pentru pasionatii de IT.
  • WordPress Admin Tutoriale de utilizare si administrare a blogurilor WordPress.

RegEx in JavasScript

Incepand cu JavaScript v1.2 limbajul suporta expresiile regulate folosind o sintaxa asemanatoare cu sintaxa Perl. Folosind expresiile regulate in JavaScript, in contextul Web 2.0 unde totul se rezuma la utilizator si la dorinta acestuia de a crea continut, munca programatorului devine mai usoara scutindu-l de multe linii de cod care cu functii alternative de parsare a textului ar consuma mai mult din timpul programatorului si mai multe resurse pe sistemul client.

In JavaScript expresiile regulate pot fi folosite in doua moduri: folosind caracterele slash /expresie/modificator sau folosind constructorul RegExp(“expresie”, “modificator”). Ambele moduri sunt utile, de obicei diferenta facandu-se la stilul de codare al programatorului. O diferenta mare se poate observa totusi la modul in care se formeaza expresiile regulate. Folosind constructorul RegExp va trebui sa insotim fiecare caracter special de un backslash. Astfel, in timp ce un sir care nu contine cifre va fi reprezentat in prima varianta prin /\D+/g, in varianta cu constructorul vom fi nevoiti sa adaugam un backslash inainte caracterului backslash care va determina clasa de caractere folosita: RegEx(“\\D+”, “g”).

Indiferent de varianta aleasa, putem aplica doua functii pe sirurile testate. Prima este test(), cu ajutorul careia putem verifica daca sablonul creat se potriveste pe text. A doua este exec(), cu ajutorul careia putem extrage informatii folosind expresiile regulate. Mai jos avem cate un exemplu din fiecare situatie:

var re = /\d+/;
if( re.test("test1234") ) window.alert('Match!');
else window.alert('No match!');

Sau in varianta in care folosim constructorul RegExp():

var re = new RegExp("\\d+");
if( re.test("test1234") ) window.alert('Match!');
else window.alert('No match!');

Observati ca in cazul constructorului am inlocuit \d+ cu \\d+ – de doua ori caracterul backslash pentru ca expresia regulata sa se formeze corect.

In mod similar putem folosi exec() pentru a extrage din sirul dat spre procesare partea din text care ne intereseaza:

re = /\D+(\d+)\D+/;
el = re.exec("test23test");
if( el.length > 0 )
    for( i=1; i<el .length; i++ )
        document.write(i + ": " + el[i] + "<br />");
else document.write("No match!");

In mod similar se poate folosi si varianta constructorului RegExp() cu conditia sa adaugam un backslash in fata caracterelor speciale.

In exemplul de mai sus am folosit sablonul /\D+(\d+)\D+/ care cauta un sir de cifre inconjurat de un sir de orice alte caractere care nu sunt cifre. Putem observa ca variabila “i” care am folosit-o pentru incrementare porneste de la 1 in cadrul buclei for si asta pentru ca primul element din array-ul returnat de functia exec() este textul in care s-a gasit potrivirea, nu doar potrivirea care o cautam.

Pentru a extinde functionalitatile expresiilor regulate in JavaScript, obiectele de tip String din JavaScript au de asemenea implementate functii care folosesc sabloane. Aceste functii sunt String.match(“sablon”) pentru identificarea unui subsir care se potriveste sablonului in cadrul unui sir de caractere mai mare, String.search(“sablon”) pentru a returna indexul primului caracter la care se gaseste potrivirea sau -1 in cazul in care potrivirea sablonului nu a fost posibila, String.replace(“sablon”, “text”) pentru a inlocui sirurile de caractere care corespund sablonului cu un text dat si String.split(“sablon”) pentru a transforma un sir de caractere intr-un array separand elementele sirului in functie de sablonul dat.