Expresiile regulate, cunoscute în mod popular ca „regex” sau „regexp”, sunt șiruri care descriu un model de căutare. Puteți utiliza expresii regulate pentru a verifica dacă un șir conține un anumit model, pentru a extrage informații dintr-un șir și pentru a înlocui părți ale unui șir cu text nou.
Aflați sintaxa de bază a expresiilor regulate și cum să le folosiți în JavaScript.
Sintaxa de bază a expresiilor regulate
Există două moduri în care puteți crea o expresie regulată în JavaScript: folosind o expresie regulată literal și folosind RegExp constructor.
O expresie regulată literală constă dintr-un model închis între bare oblice, urmat de un semnal opțional.
De exemplu:
// Fără steag
const regexExpression_1 = /pattern/
// Cu steag
const regexExpression_2 = /pattern/steag
Un steag este un parametru opțional pe care îl puteți adăuga la o expresie regulată pentru a modifica comportamentul acesteia. De exemplu:
const regexFlag = /the/g;
The g flag indică faptul că expresia ar trebui să se potrivească cu toate aparițiile, nu doar cu prima.
De asemenea, puteți crea o expresie regulată folosind RegExp constructor. De exemplu:
const regexExpression = nouRegExp("Model", "g");
The RegExp constructorul preia doi parametri: un model — un șir sau o expresie regulată literală — și un steag (e).
Există două steaguri destul de comune pe care le veți folosi cu expresia regulată în JavaScript:
- g: Indicatorul global face ca expresia regulată să se potrivească cu toate aparițiile modelului din șirul dat în loc de o singură apariție.
- i: Indicatorul care nu ține seama de majuscule și minuscule face ca expresia regulată să ignore majusculele modelului și să potrivească caracterele majuscule și minuscule din șirul dat.
Puteți folosi steaguri împreună într-o singură expresie în orice ordine. De exemplu:
const regexExpression = nouRegExp("Model", "gi");
Această expresie se va potrivi cu toate aparițiile „Modelului”, indiferent de caz.
În expresiile regulate, anumite caractere, cunoscute sub numele de metacaractere, au semnificații speciale. Le puteți folosi pentru a potrivi anumite tipuri de caractere sau modele.
Iată câteva dintre metacaracterele cele mai frecvent utilizate și semnificațiile lor:
- Personajul Wildcard (.): Acest caracter se potrivește cu orice caracter, cu excepția unei linii noi. Este un instrument util pentru potrivirea modelelor cu caractere necunoscute.
- Steaua Kleene (*): Acest caracter se potrivește cu zero sau mai multe apariții ale caracterului sau grupului precedent. Permite caracterului sau grupului precedent să apară de orice număr de ori în șir, inclusiv zero.
- Personajul opțional (?): Acest caracter se potrivește cu zero sau cu o apariție a unui caracter sau grup precedent.
- Ancora de început a liniei (^): Acest caracter se potrivește doar cu începutul unei linii sau al unui șir.
- Ancora de sfârșit de linie ($): Acest caracter se potrivește cu sfârșitul unui rând sau al unui șir.
- Set de caractere/Clasă ([]): Un set de caractere se potrivește cu orice caracter dintr-un set de caractere dintr-un șir. Le definiți folosind paranteze pătrate [] și puteți specifica un set de caractere fixe, caractere speciale sau anumite grupuri de caractere.
- Caracter alternativ (|): Acest caracter se potrivește cu caracterul sau grupul precedent sau următor. Funcționează similar cu SAU operator JavaScript.
- Caracter de grupare (()): Caracterul de grupare vă permite să grupați caractere sau sub-expresii, să le aplicați operatori ca unitate și să controlați ordinea operațiilor.
Testarea unui șir împotriva unei expresii regulate în JavaScript
În JavaScript, puteți testa un șir împotriva unei expresii regulate folosind mai multe metode.
Această secțiune presupune că aveți o înțelegere de bază a expresiilor și modelelor regulate. Dacă nu sunteți confortabil cu expresiile obișnuite, verificați un ghid pentru începători pentru expresiile regulate primul.
Metoda de testare
The .Test() metoda returnează un boolean care indică dacă expresia regulată se potrivește sau nu cu șirul. Această metodă necesită un șir pentru a efectua căutarea ca argument. Este deosebit de util pentru verificări simple.
De exemplu:
lăsa regex = /.com$/;
lăsa str = „example.com”;
consolă.log (regex.test (str)); // Adevărat
Această expresie regulată se potrivește cu un șir care se termină cu „.com”.
Metoda exec
The .exec() metoda returnează o matrice care conține textul potrivit și orice grupuri capturate sau nul dacă nu găsește o potrivire. Această metodă necesită un șir pentru a efectua căutarea ca argument. Este util pentru expresii regulate mai complexe.
De exemplu:
lăsa regex = /^\\(?([0-9]{3})\\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
lăsa str = "123-456-7890";
lăsa rezultat = regex.exec (str);
dacă (rezultat !== nul) {
consolă.Buturuga(`${rezultat[0]} este un număr de telefon valid`);
} altfel {
consolă.Buturuga("Numar de telefon invalid");
}
Expresia regulată de mai sus se potrivește cu un șir care începe cu un opțional „(", trei cifre și un opțional ")". Apoi caută un opțional „-", ".", sau spațiu, urmat de trei cifre. În sfârșit caută un opțional "-", ".", sau spațiu urmat de patru cifre la sfârșitul șirului.
Această expresie obișnuită se potrivește cu numerele de telefon în formatul „(xxx) xxx-xxxx”, „xxx-xxx-xxxx”, „xxx.xxx.xxxx” sau „xxx xxx xxxx”.
Dacă găsește o potrivire, .exec() returnează o matrice care conține textul potrivit și orice grupuri capturate (definite prin paranteze). Acesta va include fiecare grup ca element suplimentar în tabloul pe care îl returnează. Acest lucru vă permite să accesați anumite părți ale textului potrivit, ceea ce vă poate ajuta să extrageți informații dintr-un șir.
Metoda de înlocuire
The .a inlocui() metoda caută o potrivire între o expresie regulată și un șir și înlocuiește textul potrivit cu un text de înlocuire specificat. Aceasta este o metodă de obiecte șir și are ca argumente o expresie regulată și un șir de înlocuire.
De exemplu:
lăsa șir = „Vulpea maro iute sare peste câinele leneș”.;
lăsa expresie = /The/gi;
lăsa newString = șir.înlocuire (expresie, "A");
consolă.log (NewString); // „o vulpe maro iute sare peste un câine leneș”.
Acest exemplu numește a inlocui() metoda pe şir variabilă, trecând expresia regulată, expresie. Expresia regulată se va potrivi cu toate aparițiile lui „The” din șir, indiferent de caz. Apelul la metoda înlocuire îi cere să înlocuiască fiecare apariție cu șirul „a”.
Considerații de performanță în timpul utilizării expresiilor regulate
Deși expresiile regulate ajută la potrivirea și manipularea șirurilor, ele pot fi, de asemenea, costisitoare din punct de vedere al performanței. Crearea tiparelor cât mai specifice posibil și menținerea lor simple este vitală pentru a le menține performante.