Regularni izrazi, popularno znani kot "regex" ali "regexp", so nizi, ki opisujejo iskalni vzorec. Z regularnimi izrazi lahko preverite, ali niz vsebuje določen vzorec, izvlečete informacije iz niza in zamenjate dele niza z novim besedilom.
Naučite se osnovne sintakse regularnih izrazov in njihove uporabe v JavaScriptu.
Osnovna sintaksa regularnih izrazov
Regularni izraz v JavaScriptu lahko ustvarite na dva načina: z uporabo literala regularnega izraza in z uporabo RegExp konstruktor.
Literal regularnega izraza je sestavljen iz vzorca, obdanega med poševnimi črtami, ki mu sledi neobvezna zastavica.
Na primer:
// Brez zastave
konst regexExpression_1 = /pattern/
// Z zastavo
konst regexExpression_2 = /pattern/zastava
Zastavica je izbirni parameter, ki ga lahko dodate regularnemu izrazu, da spremenite njegovo vedenje. Na primer:
konst regexFlag = /the/g;
The g zastavica označuje, da se mora izraz ujemati z vsemi pojavitvami, ne samo s prvim.
Ustvarite lahko tudi regularni izraz z uporabo RegExp konstruktor. Na primer:
konst regexExpression = novoRegExp("Vzorec", "g");
The RegExp konstruktor sprejme dva parametra: vzorec - niz ali literal regularnega izraza - in zastavice.
Obstajata dve dokaj pogosti zastavici, ki ju boste uporabili z regularnim izrazom v JavaScriptu:
- g: Globalna zastavica poskrbi, da se regularni izraz ujema z vsemi pojavitvami vzorca v danem nizu namesto z eno samo pojavitvijo.
- jaz: Zastavica, ki ne razlikuje med velikimi in malimi črkami, povzroči, da regularni izraz ne upošteva velikih in malih črk v vzorcu ter se ujema z velikimi in malimi črkami v danem nizu.
Zastavice lahko uporabite skupaj v enem izrazu v poljubnem vrstnem redu. Na primer:
konst regexExpression = novoRegExp("Vzorec", "gi");
Ta izraz se bo ujemal z vsemi pojavitvami »vzorca«, ne glede na velikost črk.
V regularnih izrazih imajo nekateri znaki, znani kot metaznaki, posebne pomene. Uporabite jih lahko za ujemanje določenih vrst znakov ali vzorcev.
Tukaj je nekaj najpogosteje uporabljenih metaznakov in njihovih pomenov:
- Nadomestni znak (.): Ta znak se ujema s katerim koli posameznim znakom, razen z novo vrstico. Je uporabno orodje za ujemanje vzorcev z neznanimi znaki.
- Zvezda Kleene (*): Ta znak se ujema z nič ali več pojavitvami predhodnega znaka ali skupine. Omogoča, da se predhodni znak ali skupina pojavi poljubno število krat v nizu, vključno z ničlo.
- Izbirni znak (?): Ta znak se ujema z nič ali enim pojavitvijo predhodnega znaka ali skupine.
- Sidro začetka črte (^): Ta znak se ujema samo z začetkom vrstice ali niza.
- Sidro na koncu vrstice ($): Ta znak se ujema s koncem vrstice ali niza.
- Nabor znakov/razred ([]): Nabor znakov se ujema s katerim koli znakom iz niza znakov v nizu. Določite jih z oglatimi oklepaji [] in določite lahko nabor stalnih znakov, posebnih znakov ali določenih skupin znakov.
- Nadomestni znak (|): Ta znak se ujema s predhodnim ali naslednjim znakom ali skupino. Deluje podobno kot OR JavaScript operater.
- Znak za združevanje (()): Znak za združevanje vam omogoča združevanje znakov ali podizrazov, uporabo operatorjev zanje kot enoto in nadzor vrstnega reda operacij.
Preizkušanje niza glede na regularni izraz v JavaScriptu
V JavaScriptu lahko preizkusite niz glede na regularni izraz z uporabo več metod.
Ta razdelek predvideva, da imate osnovno razumevanje regularnih izrazov in vzorcev. Če vam regularni izrazi ne ustrezajo, preverite začetniški vodnik po regularnih izrazih prvi.
Preskusna metoda
The .test() metoda vrne logično vrednost, ki označuje, ali se regularni izraz ujema z nizom ali ne. Ta metoda vzame niz za izvedbo iskanja kot argument. Posebej uporaben je za preproste preglede.
Na primer:
pustiti regex = /.com$/;
pustiti str = "example.com";
konzola.log (regex.test (str)); // prav
Ta regularni izraz se ujema z nizom, ki se konča z ".com".
Metoda exec
The .exec() metoda vrne matriko, ki vsebuje ujemajoče se besedilo in vse zajete skupine oz nič če ne najde ujemanja. Ta metoda vzame niz za izvedbo iskanja kot argument. Uporaben je za bolj zapletene regularne izraze.
Na primer:
pustiti regex = /^\\(?([0-9]{3})\\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
pustiti str = "123-456-7890";
pustiti rezultat = regex.exec (str);
če (rezultat !== nič) {
konzola.log(`${rezultat[0]} je veljavna telefonska številka`);
} drugače {
konzola.log("Neveljavna telefonska številka");
}
Zgornji regularni izraz se ujema z nizom, ki se začne z neobveznim "(", tri števke in neobvezno ")". Nato poišče neobvezno "-", ".", ali presledek, ki mu sledijo tri števke. Končno poišče neobvezno "-", ".", ali presledek, ki mu sledijo štiri števke na koncu niza.
Ta regularni izraz se ujema s telefonskimi številkami v obliki »(xxx) xxx-xxxx«, »xxx-xxx-xxxx«, »xxx.xxx.xxxx« ali »xxx xxx xxxx«.
Če najde ujemanje, .exec() vrne matriko, ki vsebuje ujemajoče se besedilo in vse zajete skupine (določene z oklepaji). Vsako skupino bo vključil kot dodaten element v matriko, ki jo vrne. To vam omogoča dostop do določenih delov ujemajočega se besedila, kar vam lahko pomaga izvleči informacije iz niza.
Metoda zamenjave
The .zamenjati() metoda išče ujemanje med regularnim izrazom in nizom ter nadomesti ujemajoče se besedilo z določenim nadomestnim besedilom. To je metoda nizovnih objektov in kot argumenta vzame regularni izraz in nadomestni niz.
Na primer:
pustiti niz = "Hitra rjava lisica skoči čez lenega psa.";
pustiti izraz = /The/gi;
pustiti newString = string.replace (izraz, "a");
konzola.log (novString); // "hitra rjava lisica preskoči lenega psa."
Ta primer imenuje zamenjati() metoda na vrvica spremenljivka, posredovanje regularnega izraza, izražanje. Regularni izraz se bo ujemal z vsemi pojavitvami »The« v nizu, ne glede na velikost črk. Klic metode replace ji naroči, naj vsako pojavitev zamenja z nizom "a".
Premisleki glede zmogljivosti pri uporabi regularnih izrazov
Čeprav regularni izrazi pomagajo ujemati in manipulirati z nizi, so lahko tudi dragi v smislu zmogljivosti. Izdelava vzorcev, ki so čim bolj specifični in preprosti, je ključnega pomena za njihovo učinkovitost.