var txt=new RegExp(pattern,attributes);
or
var txt=/pattern/attributes;
Exemplu: var patt1=new RegExp("e", "g"); patt1 o sa fie egal cu stringul "e", iar cautarea se va face global, adica
se vor returna toate pozitiile gasite, nu doar prima(default).
Alte valori posibile pentru argumentul "attributes" sunt: "i" - case insensitive search, "gi" - global case insensitive si "m" - multiline search. Cand v-am spus ca regexp seamana cu tema de la LFA, m-am referit la urmatorul aspect: se pot adauga stringului din tipar diversi modificatori pentru parsari mai avansate. De exemplu modificatorul "[xyz]" folosit pentru a cauta caracterele din interiorul setului(cum faceam si la LFA, cu acele pattern-uri folosite la parsare). O lista completa de modificatori se gaseste pe pagina celor de la w3schools. Ca orice obiect care se respecta, regexp are si metodele sale:
compile() - schimba expresia folosita:
var patt1=new RegExp("e", "g"); // patt1="e"
patt1.compile("f");// patt1="f"
exec() - intoarce string-ul gasit(daca exista) si tine minte pozitia:
patt1.exec(str); // cauta patt1 in stringul str
test() - returneaza true daca gaseste o cel putin o potrivire sau false daca nu:
flag=patt1.test("abcde"); // flag=false pentru patt1="e" dar flag=true pt patt1="f"
Anumite metode ale obiectelor de tip String accepta folosirea regexp ca argument: search(), match(), split(), replace(). Eu am folosit metoda search() in tema, si am construit urmatorul tipar pentru a descoperi doar cuvinte intregi, nu si substringuri:
var patt1 = new RegExp("\\b" + str + "(?![a-z,A-Z,0-9])","i")
care inseamna, practic, ca voi cauta doar la inceputul cuvantului ("\\b"), si nici nu se vor accepta rezultatele care au in coada caractere numerice sau litere(adica se accepta decat cuvinte intregi, nu substringuri ale altor cuvinte ca rezultate).
Seamana putin cu tema de la LFA nu? :) Eu am ales RegExp pentru ca imi era mult mai usor sa caut cuvinte intregi astfel, decat cu search-ul normal al obiectului String.
Sa parsati sanatosi!