Expresiile regulate în JavaScript

descriere generală

Expresiile regulate sunt specimene pentru a căuta modele prestabilite de caractere în șiruri de text (numit de căutare model de potrivire). Există două moduri de a atribui variabile expresii regulate, și anume:
Folosind un obiect initializare: var = re / model / comutator.
Cu ajutorul constructorului RegExp: var re = new RegExp ( "model" [ "switch"]?).
Aici model - expresie regulată, iar comutatorul - opțiuni de căutare opționale.

Initializatori se opune, de exemplu, var = re / ab + c /. Ar trebui să se aplice în cazurile în care valoarea expresiei regulate rămâne neschimbată în timpul scenariului. Aceste expresii regulate sunt compilate în procesul de încărcare un script și, astfel, a alerga mai repede.

Apel constructor, de exemplu, var re = new RegExp ( "ab + c"). Ar trebui să se aplice în cazurile în care valoarea variabilei se va schimba. Dacă aveți de gând să utilizați o expresie regulată de mai multe ori, are sens să compileze metoda de compilare pentru modele de căutare mai eficiente.

Când creați o expresie regulată trebuie să se considere că încheierea acesteia între ghilimele atrage după sine necesitatea de a utiliza secvența de evadare, la fel ca în orice alt șir constant. De exemplu, următoarele două expresii sunt echivalente:

Expresiile regulate sunt folosite metode de Exec și regexp obiect de testare și se potrivesc metode, înlocuiți, căutare, și String obiect divizat. Dacă avem nevoie doar pentru a verifica dacă un subșir șir dat, în conformitate cu modelul care utilizează metodele de testare sau de căutare. În cazul în care, cu toate acestea, avem nevoie pentru a extrage un subșir (sau subșir) potrivire de model, atunci va trebui să utilizeze metodele de Exec sau meci. înlocui metoda va căuta substringul specificată și să o înlocuiască cu un alt șir și metoda de divizare vă permite să împartă un șir de caractere în mai multe subșiruri, bazat pe expresia regulată sau un șir de text obișnuit. Pentru mai multe informații privind utilizarea expresiilor regulate sunt date în metodele respective.

sintaxa expresie regulată

O expresie regulată poate consta din caractere obișnuite; în acest caz va corespunde unei combinații predeterminate de caractere din șir. De exemplu, expresia / com / corespunde subșiruri selectate în următoarele linii: „Comandant al marinei“ „nodulul“, „gourmet“, Cu toate acestea, flexibilitatea și puterea de expresii regulate oferă posibilitatea de a folosi aceste caractere speciale, care sunt listate în tabelul de mai jos.

Caractere speciale în expresii regulate:

\ - Pentru caractere care sunt de obicei tratate literal, indică faptul că următorul caracter este special. De exemplu, / n / este n litere și / \ n / corespunde cu newline. Pentru caracterele care sunt de obicei tratate special, acesta indică faptul că caracterul trebuie luat literal. De exemplu, / ^ / aceasta înseamnă începutul șirului, și / \ ^ / ^ corespunde unui caracter. / \\ / se potrivește cu un backslash \.

^ - Potriviți începutul liniei.

$ - Meciuri sfârșitul liniei.

* - Respectă repetarea anterioare caracter zero sau mai multe ori.

+ - Aceasta corespunde unei repetarea anterioare caracter una sau mai multe ori.

? - Corespunzător repetarea anterioară caracter zero sau o singură dată.

. - Se potrivește cu orice caracter cu excepția o linie nouă.

(Model) - Corespunde la modelul de linie și își amintește meciul în care constată.

(: Model) - Corespunde la modelul de linie, dar nu-și amintește meciurile. Folosit pentru piese de grup ale eșantionului, de exemplu, / la: | / - este expresia prescurtare / pisica | pisica / (T shka?).

x | y - Meciuri fie x sau y.

- n - numărul non-negativ. Se potrivește exact n apariții ale caracterului anterior.

- n - numărul non-negativ. Meciuri n sau mai multe apariții ale caracterului anterior. / X / echivalent / x + /. / X / echivalent / x * /.

- n și m - un număr non-negativ. Meci de cel puțin n și cel mult m apariții ale caracterului anterior. / X / echivalent / x? /.

[Xyz] - Meciuri orice caracter din paranteză.

[^ Xyz] - Meciuri orice caracter cu excepția între paranteze.

[A-z] - Meciuri orice simbol în intervalul specificat.

[^ A-Z] - Meciuri orice caracter cu excepția situată în intervalul menționat.

\ B - Corespunzător un cuvânt de delimitare, adică, poziții între cuvântul și un spațiu sau feed-line ...

\ B - Meciuri din orice poziție, alta decât un cuvânt de delimitare.

\ CX - Meciuri caracterul Ctrl + X. De exemplu, / \ CI / echivalent / \ t /.

\ D - cifra corespunzătoare. Echivalent cu [0-9].

\ D - Respectă caractere non-numerice. Este echivalent cu [^ 0-9].

\ F - Meciuri din formatul de transfer de caractere (FF).

\ N - se potrivește cu un caracter linie nouă (LF).

\ R - Meciuri un retur de car (CR).

\ S - Meciuri din spațiul de caractere. Echivalent / [\ f \ n \ r \ t \ v] /.

\ S - Meciuri orice caracter non-spațiu. Echivalent / [^ \ f \ n \ r \ t \ v] /.

\ T - se potrivește cu un caracter tabulator (HT).

\ V - Meciuri o filă verticală (VT).

\ W - Respectă litere, numere, sau de subliniere. Echivalent / [A-Za-z0-9_] /.

\ W - se potrivește cu orice caracter cu excepția litere, cifre sau subliniere.
Echivalent / [^ A-Za-z0-9_] /.

\ N n - un număr pozitiv. Respectă substring stocate n-clorhidric. Se calculează prin numărarea între paranteze la stânga. În cazul în care Paranteză înainte de simbolul este mai mică decât n, echivalentul \ 0n.

\ 0n n - numărul octal, nu este mai mare decât 377. Meciuri caracterul cu codul octal n. De exemplu, / \ 011 / echivalent / \ t /.

\ N Xn - un număr hexazecimal format din două cifre. Se potrivește cu caracterul cu codul hex n. De exemplu, / \ x31 / echivalent / 1 /.

\ N Un - un număr hexazecimal format din patru cifre. Corespunzător caractere Unicode cu codul hex n. De exemplu, / \ u00A9 / echivalent / c /.

opțiuni de căutare

Când creați o expresie regulată putem specifica opțiuni de căutare suplimentare:
i (ignora caz). nu face distincție între litere mari și litere mici.
g (căutare la nivel mondial). căutare globală pentru toate aparițiile probei.
m (multilinie). introduce mai multe linii ar trebui să fie tratate ca mai multe linii. Dacă utilizați steagul m, iar ^ și $ se potrivesc cu începutul și sfârșitul oricărui șir șir de intrare comună în loc de începutul și sfârșitul întregul șir de intrare.
Orice combinație a acestor trei opțiuni, de exemplu, sau GIM ig.

Acum, ia în considerare opțiunea de căutare la nivel mondial. Acesta este utilizat în mod obișnuit metoda de a înlocui proba de căutare și înlocuiți cu un nou subșir. Faptul este că, în mod implicit, această metodă înlocuiește doar primul subșir și returnează rezultatul. Luați în considerare următorul scenariu:

În cele din urmă, opțiunea de căutare multilinie permite model de potrivire expresia de intrare constând din mai multe rânduri de text, simboluri conectate printr-o linie de pauză. În mod implicit, de potrivire de model încetează în cazul în care sfârșiturile de linie găsite. Această opțiune depășește această limitare și furnizează căutare eșantion pe linia de sursă. Aceasta afectează, de asemenea, interpretarea unora dintre caractere speciale în expresii regulate, și anume: De obicei, caret se potrivește doar primul element rând. În cazul în care opțiunea de căutare multi-linie este activat, acesta este comparat cu orice element de linie, care este precedată de o pauză de linie. În mod normal, $ caractere se potrivește doar cu ultimul element rând. În cazul în care opțiunea de căutare multiple este selectat, acesta este comparat cu orice element de linie, care este o linie de pauză.

Memorizarea meciuri subșir găsite

În cazul în care o parte a unei expresii regulate între paranteze, atunci substringul corespunzătoare vor fi stocate pentru utilizare ulterioară. Proprietățile de $ 1 este folosit pentru a accesa șirul memorat. $ 9 regexp obiect sau elemente în matrice returnat de exec și meciul. În acest din urmă caz, numărul de subșirurilor găsite și stocate este nelimitat.

Următorul script folosește metoda înlocui pentru a rearanja cuvinte într-un rând. Pentru a înlocui textul găsit utilizează proprietățile de 1 $ și $ sau 2.

Acest script va afișa în fereastra de browser a textului:

deoarece \ W = [A-Za-z0-9_] pentru mai multe browsere, scrisorile din România nu vor funcționa. Dacă dorim să folosim scrisorile garantate din Romania, atunci va trebui să modificați ușor codul:

Acest script va afișa în fereastra de browser a textului:

Expresii regulate - este un instrument puternic pentru prelucrarea datelor de intrare. Sarcină, care necesită înlocuire sau un text de căutare poate fi frumos terminat cu această „limbă în limba.“ Deși efectul maxim de expresii regulate pot fi realizate prin utilizarea limbilor server-side, dar nu ar trebui să subestimeze posibilitatea acestei cereri și pe partea de client.

concepte de bază

O expresie regulată (expresie regulată) - mijloace pentru linii de prelucrare sau secvență de caractere care definește textul șablon.

Modifier - conceput pentru a „instrui“ expresia regulată.
Metacaractere - caractere speciale care servesc drept instrucțiuni limbaj de expresie regulată.

O expresie regulată este definită ca o variabilă normală, cu excepția faptului că în loc de ghilimele folosite pentru a reduce, de exemplu:

Sub model simplu înțelegem aceste modele, care nu necesită nici simboluri speciale.

Să presupunem că scopul nostru este de a înlocui toate literele „p“ (mici și de capital) la scrisoarea de capital latin „R“, în expresia regulată fraza.

Crearea unui șablon de var reg = / p /, iar metoda de utilizare furnizează înlocui conceput

Rezultatul este șirul „RegulyaRnye expresia“ schimbare a avut loc numai la prima apariție a literei „p“ include cazul. Cu toate acestea, acest rezultat nu îndeplinește condițiile de problema noastră. Aici avem nevoie de modificator „g“ și „i“, care pot fi utilizate atât separat, cât și împreună.
Acești modificatori sunt plasate la capătul modelului de expresie regulată, după slash, și au următoarele semnificații: adjectivul „g“ - specifică șirul de căutare ca „global“, adică în acest caz, înlocuirea va avea loc pentru toate aparițiile literei „p“. Acum, modelul arata astfel: var reg = / p / g. înlocuind-o în codul nostru

Obținem șirul „RegulyaRnye vyRazheniya“.

Modificatorul „i“ - specifică cazul insensibile șir de căutare, adăugând modificator nostru șablon de var reg = / p / Gl, după rularea script-ul vom obține rezultatul dorit de problema noastră - „RegulyaRnye vyRazheniya“.

caractere speciale (metacaracterele)

Metasymbols defini tipul dorit de șiruri de caractere, metoda șirului în mediul de text, precum și numărul de caractere dintr-un anumit tip de vizualizare a textului. Prin urmare, meta-caractere pot fi împărțite în trei grupe:

Meciuri metacaracterele de căutare.
Cantitative meta-caractere.
Metacaracterele poziționare.
Meciuri metacaractere căutare

\ B cuvânt limita, stabilește condiția în care șablonul trebuie să fie efectuate la începutul sau la sfârșitul cuvintelor.

\ B nu o graniță cuvânt, stabilește condiția în care șablonul nu este executat la începutul sau la sfârșitul unui cuvânt.

\ D este un număr între 0 și 9.

\ S cu un singur caracter nul se potrivește cu spațiul de caractere.

\ S-un singur caracter non-gol, cu orice caracter, cu excepția spațiu.

\ W scrisoare, numărul sau subliniere.

\ W nu este litere, cifre sau subliniere.

. orice caracter, orice caractere, litere, numere, etc.

[] Set de caractere care definește condiția în care șablonul trebuie să fie efectuate în orice caractere care se potrivesc în paranteze pătrate.

[^] Set de non-caractere, stabilește condiția în care șablonul nu trebuie efectuat nici un caracter de potrivire în paranteze pătrate.

metacaractere cantitative

* Zero sau mai multe ori.

? Zero sau o singură dată

+ Unul și de mai multe ori.

n sau de mai multe ori.

cel puțin, de n ori, dar nu mai mult de m ori la.

poziționare metacaracterele

^ La începutul liniei.

Unele metode de lucru cu șabloane

înlocuiți - metoda am folosit la începutul acestui articol, este proiectat să caute și să înlocuiască substringul potrivit probei cu un nou subșir.

testare - această metodă verifică dacă există o potrivire într-un rând în ceea ce privește șablonul și se întoarce false, în cazul în care meciul modelul încheiat cu un eșec, altfel adevărat.

De asemenea, metoda de testare se poate întoarce adevărat sau fals, în loc de orice alt șir de caractere specificat de programator.
de exemplu:

în acest caz, rezultatul este șirul șirul“nu se potrivește."

exec - această metodă realizează o comparație șir cu o probă, un model predeterminat. În cazul în care meciul modelul încheiat cu un eșec, atunci null este returnat. Altfel, rezultatul este o matrice de subșirurilor corespunzând unui anumit model. / * Primul element de matrice este egal cu șirul original, care satisface modelul dat * /
de exemplu:

Rezultatul este de patru linii:
Data nașterii: 15/09/1980
Data nașterii: 15
Luna de naștere: 09
Anul nașterii: 1980

concluzie

exec (regexp) - găsește toate aparițiile (intrarea în șablonul „obișnuit“) într-un rând. Returnează o matrice (coincidenta), și actualizează regexp-o proprietate, sau nul - în cazul în care nimic nu este găsit. Cu g modificator - de fiecare dată când apelați această funcție, aceasta va reveni următorul meci găsit după cea anterioară - se realizează prin efectuarea ultimului index de căutare offset.

meci (regexp) - găsi o parte a modelului liniei. Dacă modificator g, apoi se potrivesc () returnează o matrice de toate meciurile sau nule (și nu o matrice gol). Fără g modificator, această funcție acționează ca exec ();

testul (regexp) - Această funcție verifică dacă modelul de potrivire șir. Returnează true - în cazul în care există o potrivire, și fals - în cazul în care nu există nici un meci.

înlocuiți (regexp, mix) - metoda returneaza un string pentru a schimba, în conformitate cu modelul (expresie regulyarrnym). Primul parametru regexp poate conține, de asemenea, un șir de caractere, nu o expresie regulată. Fără modificator g - metoda linie înlocuiește numai prima apariție; Modificatorul g - merge schimbare la nivel mondial, și anume, schimba toate aparițiile acea linie. mix - modelul de înlocuire poate prinitat valoare șir, înlocuind funcția șablon (numele funcției).

În cazul în care al doilea mix parametru conține un șir de caractere, putem folosi următoarele caractere speciale:
  • $$ - pastă $;
  • $ - subșir de potrivire;
  • $ „- parte dintr-un șir în fața subșir potrivite;
  • $ „- partea care urmează după subsir potrivire;
  • $ N ($ nn) - valoarea suporturilor de stocare-n th (dacă primul argument - regexp obiect);

Dacă al doilea parametru cuprinde o funcție de amestec, aceasta va fi indusă la fiecare coincidență. Valoarea de înlocuire va avea ca rezultat al funcției, adică, reveni „“;

Exemple de astfel de funcții:

Apelul următor va reveni înlocui XXzzzz - XX. zzzz.

După cum puteți vedea, există două paranteze în expresia regulată, și, prin urmare, doi parametri p1, p2 funcția. Dacă au existat trei paranteze, funcția ar trebui să adăugați parametrul p3.

Funcția următoare înlocuiește borderTop tastați cuvintele pe frontieră-top:

clasa RegExp

Această clasă este responsabil pentru manipularea rânduri prin expresii regelyarnyh. constructorul sau ia forma următoare:

Este nevoie de un singur paremetr obligatoriu - o „expresie regulată“ este între ghilimele. „Flags“ este încă termeni de căutare și pot fi:

  • g - este dat o căutare la nivel mondial, în cazul în care acest indicator este setat, atunci expresia va returna toate cuvintele potrivite.
  • I - ignorarea insensibil
  • m - multilinie

Pentru a lucra cu varazheniyami regulate sunt trei metode din clasa String:

  • meci - căutări într-un șir de caractere, folosind o expresie regulată transmisă ca parametru și returnează o matrice cu rezultatele căutării. Dacă nimic nu este găsit, returnează null.
  • înlocuiți - efectuează căutare și înlocuiți într-un șir de caractere, folosind o expresie regulată și returnează șirul rezultat.
  • căutare - efectuează poik în linie folosind expresia regulată transmisă ca parametru și returnează poziția primei subșir care se potrivește cu expresia regulată.