CalculatoareProgramare

Javascript, exemple de expresie regulate, verifica Regular Expression

Înainte de apariția limbilor hipertext, mai degrabă până când a devenit clar că nu este necesar doar să căutăm, ci și să o facem în anumite condiții, într-un anumit loc, cu date modificate, în cantități potrivite, funcțiile obișnuite de căutare și înlocuire aranjate pentru orice sofisticat programator. S-au creat capodopere ale artei de căutare în limbile de programare, iar bazele de date au fost perfecționate sub formă de condiții de eșantionare, echipate cu proceduri stocate, declanșatoare și alte mijloace de prelevare a probelor din compozițiile greoaie de informații relaționale. Apariția unor expresii regulate pentru revoluție nu a condus, dar sa dovedit a fi un mijloc util și convenabil pentru căutarea și înlocuirea informațiilor. De exemplu, e-mailurile JavaScript obișnuite JavaScript simplifică semnificativ înregistrarea vizitatorilor, nu descarcă site-ul trimițând mesaje către adrese inexistente.

Să spunem că expresia regulată JavaScript este mult mai bună decât secvențele indexOf () bine gândite în cadrul încadrării operatorilor condiționali și ciclici, este imposibil, dar să spunem că a făcut codul scriptului compact, dar prost înțeleasă pentru cei neinițiați poate fi lipsit de ambiguitate.

Obiect RegExp = șablon + motor

Expresiile regulate sunt un șablon + motor. Prima este expresia regulată în sine - obiectul JavaScript este RegExp, al doilea este executorul de șablon care îl aplică șirului. Motoarele care implementează expresii regulate pentru fiecare limbaj de programare sunt diferite. Și, deși nu toate diferențele sunt semnificative, acest lucru trebuie avut în vedere și, de asemenea, asigurați-vă că verificați cu atenție expresia regulată înainte de ao utiliza.

O notație specială pentru scrierea expresiilor regulate este destul de convenabilă și destul de eficientă, dar necesită îngrijire, precizie și răbdare de la dezvoltator. Pentru notarea modelelor de expresii regulate este necesar să ne folosim. Acesta nu este un tribut adus modului, este logica implementării mecanismului expresiilor regulate JavaScript.

Modelul expresiei regulate

Sunt permise două opțiuni:

Var expOne = / abc * / i;

Var expTwo = RegExp ("abc *", "i");

De obicei se folosește prima metodă. În cel de-al doilea caz, se utilizează ghilimele, astfel încât să se folosească caracterul "\", trebuie scapat de reguli comune.

"I" este steagul care denotă că "registrul nu este important". Puteți utiliza, de asemenea, steagurile "g" - "căutare globală" și "m" - căutare multi-linie.

Simbolul "/" este folosit pentru a desemna un șablon.

Începutul și sfârșitul expresiei regulate;

Caracterul '^' definește caracterul (caracterele) de la care pornește expresia regulată și '$' determină care caracter (e) ar trebui să fie la final. Nu experimenta cu ei în interiorul expresiei, acolo ei au un alt sens.

De exemplu,

Var eRegExp = nou RegExp (cRegExp, 'i');

Var cRegRes = '';

Var sTest = 'AbcZ';

Dacă (eRegExp.test (sTest)) {

CRegRes + = '- Da';

} Altfel {

CRegRes + = '- Nu';

}

Var dTestLine = document.getElementById ('scTestLine');

DTestLine.innerHTML = 'Expresia /' + cRegExp + '/ pentru sirul "+ sTest +" "+ cRegRes.

În elementul "scTestLine" va exista un rezultat (variabila cRegExp are valoarea corespunzătoare):

Expresia / ^ AbcZ $ / pentru șirul "abcz" - Da

Dacă eliminați pavilionul "i", rezultatul va fi:

Expresia / ^ AbcZ $ / pentru șirul "abcz" - nr

Expresie regulată

O expresie regulată este o secvență de caractere care face obiectul unei căutări. Expresia / qwerty / caută apariția exactă a acestei secvențe:

Expresia / qwerty / pentru șirul "qwerty" - Da

Expresia / qwerty / pentru șirul "123qwerty456" - Da

Caracterul '^' modifică esența expresiei:

Expresia / ^ qwerty / pentru sirul "123qwerty456" - nr

Expresia / ^ qwerty / pentru șirul "qwerty456" - Da

În mod similar, pentru caracterul de la sfârșitul liniei. Expresiile regulate permit secvențe: de exemplu, [az], [AZ], [0-9] - toate literele alfabetului latin din registrul sau cifrele specificate. Literele rusești sunt, de asemenea, permise să fie utilizate, dar trebuie să fiți atenți la codificarea șirurilor (unde să căutați ceea ce căutați) și la pagină. Deseori literele rusești, ca și caracterele speciale, sunt de preferință date prin coduri.

Când se formează o expresie regulată, puteți specifica opțiunile de prezență a anumitor simboluri într-un anumit loc, cu numărul lor stabilit după cum urmează: '*' = repetare de 0 sau de mai multe ori; '+' = Repetați de mai multe ori; {1,} este același cu "+"; {N} = repetarea exact n ori; {N,} = repetarea n și mai multe ori; {N, m} = repetarea de la n la m ori.

Folosind paranteze pătrate, puteți specifica variantele de caractere din set. Arată așa. [Abcd] = [ad] = orice caracter de patru: "a", "b", "c" sau "d". Puteți specifica contrariul. Orice caracter diferit de cel specificat în set: [^ abcd] = orice caracter cu excepția "a", "b", "c" sau "d". '?' Indică faptul că este posibil să nu fie un simbol în acest loc. '' Definește orice caracter, cu excepția unei rupturi de linie. Aceasta este '\ n', '\ r', '\ u2028' sau '\ u2029'. Expresia '\ s * | \ S *' = '[\ s | \ S] * "inseamna cautarea oricarui personaj, inclusiv pauzele de linie.

Versiuni simplificate ale expresiei regulate

Expresia "[\ s | \ S] *" - căutarea unui spațiu sau a absenței acestuia, care este tot ce este în linie. În acest caz, notația "\ s" reprezintă un spațiu, iar '\ S' reprezintă absența sa.

În mod similar, puteți utiliza '\ d' pentru a căuta o cifră zecimală, iar '\ D' va găsi un caracter non-numeric. Notațiile "\ f", "r" și "\ n" corespund formulei de feed-uri, returului de transport și liniei de alimentare.

Caracterul tab este '\ t', caracterul vertical este '\ v'. Notația "\ w" va găsi orice caracter al alfabetului latin (litere, numere, subliniere) = [A-Za-z0-9_].

Notația '\ W' este echivalentă cu [^ A-Za-z0-9_]. Aceasta înseamnă orice caracter care nu este o literă a alfabetului latin, un număr sau un caracter "_".

Căutați caracterul '\ 0' = căutați caracterul NUL. Căutați "\ xHH" sau "\ uHHHH" = căutați un caracter cu codul HH sau HHHH, respectiv. H - cifra hexazecimal.

Limba recomandată și codarea expresiei regulate

Orice expresie regulată este importantă pentru a testa cu atenție opțiunile de linie diferite.

Cu experiența creării unor expresii regulate, erorile vor fi mai puțin, însă trebuie să ținem mereu cont de faptul că cunoașterea proprie a regulilor de scriere a unei expresii regulate poate să nu corespundă realității, mai ales atunci când "regulatul" este transferat de la o limbă la alta.

Alegerea dintre clasice (indicație exactă) și o versiune simplificată a expresiei regulate, este mai bine să preferăm prima. La urma urmei, clasicii indică întotdeauna în mod clar ceea ce este căutat. Dacă există expresii regulate în expresia regulată sau în șirul de căutare, ar trebui să rezultați o singură codificare a tuturor liniilor și o pagină pe care rulează codul JavaScript care execută expresia regulată.

Când procesați caractere care nu aparțin alfabetei latine, este logic să luați în considerare specificarea codurilor de caractere, nu personajele în sine.

La implementarea algoritmilor de căutare JavaScript, expresia regulată trebuie verificată cu atenție. Este deosebit de important să controlați codarea caracterelor.

Parentheses în expresii regulate

Parantezele pătrate specifică variantele de caractere care trebuie să fie sau nu sunt prezente într-un anumit loc, iar cele rotunde sunt variante ale secvențelor. Dar aceasta este doar o regulă generală. Nu există excepții de la aceasta, dar există multe aplicații diferite.

Var cRegExp = "[az] *. (Png | jpg | gif)";

Var eRegExp = nou RegExp (cRegExp, 'i');

Var cRegRes = '';

Var sTest = 'imagine.jpg';

Dacă (eRegExp.test (sTest)) {

CRegRes + = '- Da';

} Altfel {

CRegRes + = '- Nu';

}

rezultate:

Expression /[az]*.(png|jpg|gif)/ pentru linia "picture.jpg" - Da

Expression /^[ad][az]*.(png|jpg|gif)/ pentru linia "picture.jpg" - Nu

Expression /^[ad][az]*.(png|jpg|gif)/ pentru șirul "apicture.jpg" - Da

Expression /^[ad][az]*.(png|jpg|gif)/ pentru șirul "apicture.jg" - Nu

Trebuie remarcat în mod special că orice, după care există un asterisc, poate fi prezent de zero ori. Aceasta înseamnă că "obișnuitul" poate funcționa cel puțin neașteptat.

Verificarea e-mailului de încercare RegExp

În JavaScript, expresiile obișnuite primesc două metode, test și execuție și pot fi folosite în obiectele String în metodele lor: căutare, împărțire, înlocuire și potrivire.

Metoda de testare a fost deja demonstrată, vă permite să verificați corectitudinea unei expresii regulate. Rezultatul metodei este adevărat / fals.

Luați în considerare următoarele expresii JavaScript regulate. Verificarea e-mailului de la numărul "dificil, dar exact":

Var eRegExp = /^(([[2<<())[[]]],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @ "] +) *) | (" + ")) @ ({\ [[0-9] {1,3} \ [0-9] {1,3} (A-zA-Z \ -0-9] + \) + [A-zA-Z] {2}}) ) $ /;

Pentru șirul var sTest ='SlavaChip@sci.by 'este adevărat, adică acest șir este adresa de e-mail corectă. Verificarea a fost efectuată utilizând metoda eRegExp.test (sTest).

Utilizare practică: prelucrarea e-mailurilor

Metoda exec pe ieșire oferă o matrice, apel:

Var aResult = eRegExp.exec (sTest);

CRegRes = '
' + aResult.length + '
';
Pentru (var i = 0; i CRegRes + = aResult [i] + '
';
}

Oferă următorul rezultat:

9
Slava.Chip@sci.by
Slava.Chip
Slava.Chip
.Chip
nedefinit
sci.by
nedefinit
sci.by
Sci.

Celelalte metode funcționează în mod similar. Se recomandă să le verificați singuri. Dezvoltarea și utilizarea expresiilor regulate este de dorit să se practice în practică, copierea codului nu este întotdeauna adecvată aici.

Populația "obișnuită"

Expresia regulată JavaScript pentru eMail nu este singura, există o mulțime de opțiuni mai simple. De exemplu, /^[w-\.]+@[\w-]+\[[]]2,3}$/i. Cu toate acestea, această opțiune nu ia în considerare toate opțiunile pentru înregistrarea unei adrese de e-mail.

Desigur, trebuie să revizuiți experiența colegilor, să analizați metodele pe care le oferă, înainte de a vă crea propria expresie regulată în JavaScript. Dar există anumite dificultăți. Nu uitați că expresiile regulate JavaScript (exemple de ele când copiați) pot duplica caracterele esențiale: '\', '/' sau ghilimele. Aceasta va duce la o eroare care poate fi căutată de mult timp.

Este important să se țină seama de "aspectul uman" obișnuit. La urma urmei, o expresie regulată formală JavaScript pentru un telefon care poate fi vizitator (persoană) poate fi indicată în mai multe moduri: 123-45-67, (29) 1234567, 80291234567 sau +375291234567. Și este același număr. Varianta de scriere a mai multor șabloane nu este întotdeauna acceptabilă și fixarea rigidă a regulii pentru scrierea unui număr poate crea inconveniente sau limitări inutile. Varianta / ^ \ d [\ d \ (\) \ -] {4,14} \ d $ / i este potrivită pentru majoritatea cazurilor de verificare telefonică.

Dacă doriți să compuneți expresii regulate JavaScript, doar verificarea cifrelor, atunci chiar și un astfel de caz simplu necesită clarificări. El trebuie să ia în considerare o notare totală sau fracționată, exponențială sau un număr obișnuit, pozitiv sau negativ. De asemenea, puteți lua în considerare prezența simbolului monedei, numărul de cifre după punct zecimal și împărțirea întregii părți a numărului în triade.

Expresia / ^ \ d + $ / i va verifica numai cifrele, iar expresia / ^ \ d + \. \ D + $ / i vă permite să utilizați o perioadă pentru a indica partea fracționată a unui număr.

În JavaScript, verificarea expresiilor regulate poate fi utilizată pentru a specifica formatul datelor de intrare, ceea ce este important, în special atunci când introduceți chestionare, date pașaport, adrese juridice etc.

Verificarea datei este doar complicată

Luați în considerare expresiile regulate JavaScript. Exemple pentru o dată, ca pentru un număr sau număr de telefon, reprezintă o alegere între rigiditate și flexibilitate. Data evenimentului este unul dintre datele esențiale care trebuie introduse adesea. Însă fixarea intrărilor într-un anumit format: "dd-mm-yyyy" sau "dm.yy" duce adesea la nemulțumirea clienților. Trecerea de la câmpul de intrare de la o zi la alta, efectuată prin formularul HTML clasic, nu poate avea loc când se introduce doar o singură cifră, iar intrarea în al doilea poate provoca dificultăți. De exemplu, în câmpul zilei 3 a fost deja introdus, iar următoarea cifră 2 nu înlocuiește prima și îi este atribuită 32, ceea ce, firește, va cauza neplăceri.

Eficiența și comoditatea expresiilor regulate depind, în esență, de structura generală a dialogului cu vizitatorul. Într-un caz, este indicat să se utilizeze un câmp de introducere a formularului pentru a indica data, într-un alt caz este necesar să se furnizeze câmpuri diferite pentru zi, lună și an. Dar atunci vor exista "costuri de cod" suplimentare pentru verificarea anului de salt, numărul de luni, numărul de zile în ele.

Căutare cu înlocuire, memorie a expresiei regulate

Înlocuirea JavaScript (expresii regulate) utilizează metoda obiectului String și vă permite să găsiți valoarea și să o modificați imediat. Acest lucru este util pentru corectarea erorilor de intrare, editarea conținutului câmpurilor de formular și pentru conversia datelor dintr-un format de prezentare în altul.

Var cRegExp = / ([а-я] +) \ s ([а-я] +) \ s ([а-я] +) / i; // la căutare sunt create trei "variabile"

Var sTest = 'acest articol este bun!';
Var cRegRes = sTest.replace (cRegExp, "$ 2, $ 3, $ 1");

Var dTestLine = document.getElementById ('scTestLine');

DTestLine.innerHTML = 'Expresia' + cRegExp + 'pentru șirul "+ sTest +" va fi:' + cRegRes;

rezultat:

Expresia / [[a-π] +) \ s ([a-π] +) \ s [[a-π] +) / i pentru linia "acest articol este bun! Obțineți: un articol, bun, acesta!

Când se execută, fiecare pereche de paranteze stochează rezultatul în 'variabila' $ n, unde n este numărul de perechi de perechi ($ 1, $ 2, ...). Spre deosebire de cea general acceptată, numerotarea variabilelor se face cu 1 și nu cu 0.

Recomandări generale

O expresie regulată simplifică codul, însă timpul necesar pentru a-l dezvolta este adesea important. Puteți începe să lucrați cu construcții simple, apoi combinați-le cu expresii mai complexe. Puteți utiliza diferite servicii online pentru a testa expresii regulate sau instrumente locale speciale.

Cea mai bună opțiune este să creați propria dvs. bibliotecă de expresii regulate și propriul instrument pentru testarea noilor evoluții. Aceasta este cea mai bună modalitate de a consolida experiența și de a învăța cum să creați repede modele fiabile și confortabile.

Folosind repetițiile de caractere și de linii, adică caracterele speciale "*", "+" și brațele care indică numărul de repetări, ar trebui să fie ghidate de principiile simplității și oportunității. Este important să înțelegem că expresia regulată de la începutul funcționării sale și până la obținerea rezultatului este în întregime în puterea motorului browserului folosit. Nu toate limbile JavaScript sunt echivalente. Fiecare browser își poate aduce propriile preferințe personale în interpretarea expresiilor regulate.

Compatibilitatea se referă nu numai la pagini și foi de stil, ci și la expresiile regulate. O pagină care utilizează JavaScript poate fi considerată depanată numai atunci când a lucrat cu succes pe diferite browsere.

JavaScript, String și RegExp

Prin lucrul corect la nivel de client, adică în browser-ul vizitatorului în limba JavaScript, este necesară o calificare ridicată de la dezvoltator. A trecut mult timp de la posibilitatea de a depana codul JavaScript cu propriile dvs. instrumente de browser sau cu ajutorul extensiilor terților, editorilor de coduri, programelor independente.

Cu toate acestea, nu toate cazurile, debugger se poate ocupa și de a oferi un sprijin bun pentru dezvoltator, o detectare rapidă a erorilor, a detecta blocaje. Ori atunci când computerul a fost axat pe calculele, în trecutul îndepărtat. Acum, să acorde o atenție deosebită la informație și linia de obiecte au ajuns să joace un rol semnificativ. Numărul de șiruri de oțel, și adevărata natura lor, ei manifestă numai la momentul potrivit și locul potrivit.

Expresiile regulate consolida posibilitatea de linii, dar necesită respect de sine. Debug RegExp în lucrarea sa, chiar dacă este posibil pentru a simula, idee nu prea interesant.

Înțelegerea structurii și logica a obiectului regexp, adica String obiect, sintaxa si semantica JavaScript - un cod de siguranță și securitate adevărat, funcționarea stabilă a fiecărei pagini și site-ul ca un întreg.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 ro.delachieve.com. Theme powered by WordPress.