Regulárne výrazy, ľudovo známe ako „regex“ alebo „regexp“, sú reťazce, ktoré opisujú vzor vyhľadávania. Regulárne výrazy môžete použiť na kontrolu, či reťazec obsahuje špecifický vzor, extrahovať informácie z reťazca a nahradiť časti reťazca novým textom.
Naučte sa základnú syntax regulárnych výrazov a ako ich používať v JavaScripte.
Základná syntax regulárnych výrazov
Existujú dva spôsoby, ako môžete vytvoriť regulárny výraz v JavaScripte: pomocou literálu regulárneho výrazu a pomocou RegExp konštruktér.
Literál regulárneho výrazu pozostáva zo vzoru uzavretého medzi lomkami, za ktorým nasleduje voliteľný príznak.
Napríklad:
// Bez vlajky
konšt regulárny výraz_1 = /pattern/
// S vlajkou
konšt regulárny výraz_2 = /pattern/vlajka
Príznak je voliteľný parameter, ktorý môžete pridať k regulárnemu výrazu a upraviť jeho správanie. Napríklad:
konšt regexFlag = /the/g;
The g príznak označuje, že výraz by sa mal zhodovať so všetkými výskytmi, nielen s prvým.
Môžete tiež vytvoriť regulárny výraz pomocou RegExp konštruktér. Napríklad:
konšt regulárny výraz = NovýRegExp("vzor", "g");
The RegExp Konštruktor má dva parametre: vzor – reťazec alebo literál regulárneho výrazu – a príznak (s).
Existujú dva pomerne bežné príznaky, ktoré budete používať s regulárnym výrazom v JavaScripte:
- g: Vďaka globálnemu príznaku sa regulárny výraz zhoduje so všetkými výskytmi vzoru v danom reťazci namiesto jedného výskytu.
- i: Príznak nerozlišujúci malé a veľké písmená spôsobí, že regulárny výraz nebude brať do úvahy veľké a malé písmená vo vzore a zhoduje sa s veľkými a malými písmenami v danom reťazci.
Príznaky môžete použiť spolu v jednom výraze v ľubovoľnom poradí. Napríklad:
konšt regulárny výraz = NovýRegExp("vzor", "gi");
Tento výraz sa bude zhodovať so všetkými výskytmi výrazu „Vzor“ bez ohľadu na veľkosť písmen.
V regulárnych výrazoch majú určité znaky, známe ako metaznaky, špeciálny význam. Môžete ich použiť na priradenie konkrétnych typov postáv alebo vzorov.
Tu sú niektoré z najčastejšie používaných metaznakov a ich význam:
- Zástupný znak (.): Tento znak sa zhoduje s ktorýmkoľvek samostatným znakom okrem nového riadku. Je to užitočný nástroj na porovnávanie vzorov s neznámymi znakmi.
- hviezda Kleene (*): Tento znak sa zhoduje s nulovým alebo viacerými výskytmi predchádzajúceho znaku alebo skupiny. Umožňuje, aby sa predchádzajúci znak alebo skupina objavila v reťazci koľkokrát, vrátane nuly.
- Voliteľný znak (?): Tento znak sa zhoduje s nulovým alebo jedným výskytom predchádzajúceho znaku alebo skupiny.
- Začiatok čiarovej kotvy (^): Tento znak sa zhoduje iba so začiatkom riadku alebo reťazca.
- Kotva na konci riadku ($): Tento znak sa zhoduje s koncom riadku alebo reťazca.
- Znaková sada/trieda ([]): Sada znakov sa zhoduje s ľubovoľným znakom zo sady znakov v reťazci. Definujete ich pomocou hranatých zátvoriek [] a môžete zadať sadu pevných znakov, špeciálnych znakov alebo určitých skupín znakov.
- Alternatívna postava (|): Tento znak sa zhoduje s predchádzajúcim alebo nasledujúcim znakom alebo skupinou. Funguje to podobne ako na OR Operátor JavaScript.
- Znak zoskupenia (()): Znak zoskupenia vám umožňuje zoskupovať znaky alebo podvýrazy, aplikovať na ne operátory ako jednotku a riadiť poradie operácií.
Testovanie reťazca oproti regulárnemu výrazu v JavaScripte
V JavaScripte môžete otestovať reťazec oproti regulárnemu výrazu pomocou niekoľkých metód.
Táto časť predpokladá, že máte základné znalosti o regulárnych výrazoch a vzoroch. Ak vám nevyhovujú regulárne výrazy, pozrite sa sprievodca regulárnymi výrazmi pre začiatočníkov najprv.
Testovacia metóda
The .test() metóda vracia boolovskú hodnotu označujúcu, či sa regulárny výraz zhoduje s reťazcom alebo nie. Táto metóda berie ako argument reťazec na vykonanie vyhľadávania. Je to užitočné najmä pre jednoduché kontroly.
Napríklad:
nech regulárny výraz = /.com$/;
nech str = "example.com";
konzoly.log (regex.test (str)); // pravda
Tento regulárny výraz sa zhoduje s reťazcom, ktorý končí príponou „.com“.
Metóda exec
The .exec() metóda vráti pole obsahujúce zhodný text a všetky zachytené skupiny resp nulový ak nenájde zhodu. Táto metóda berie ako argument reťazec na vykonanie vyhľadávania. Je to užitočné pre zložitejšie regulárne výrazy.
Napríklad:
nech regulárny výraz = /^\\(?([0-9]{3})\\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
nech str = "123-456-7890";
nech vysledok = regex.exec (str);
ak (výsledok!== nulový) {
konzoly.log(`${result[0]} je platné telefónne číslo.");
} inak {
konzoly.log("Neplatné telefónne číslo");
}
Regulárny výraz vyššie sa zhoduje s reťazcom, ktorý začína voliteľným "(", tri číslice a voliteľné ")". Potom hľadá voliteľné "-", ".“ alebo medzera, za ktorou nasledujú tri číslice. Nakoniec hľadá voliteľné "-", ".", alebo medzera nasledovaná štyrmi číslicami na konci reťazca.
Tento regulárny výraz sa zhoduje s telefónnymi číslami vo formáte „(xxx) xxx-xxxx“, „xxx-xxx-xxxx“, „xxx.xxx.xxxx“ alebo „xxx xxx xxxx“.
Ak nájde zhodu, .exec() vráti pole obsahujúce zhodný text a všetky zachytené skupiny (definované zátvorkami). Zahrnie každú skupinu ako ďalší prvok v poli, ktoré vráti. To vám umožní prístup k špecifickým častiam zhodného textu, čo vám môže pomôcť extrahovať informácie z reťazca.
Metóda nahradenia
The .replace() metóda vyhľadá zhodu medzi regulárnym výrazom a reťazcom a nahradí zhodný text zadaným náhradným textom. Toto je metóda reťazcových objektov a ako argumenty sa používa regulárny výraz a náhradný reťazec.
Napríklad:
nech reťazec = "Rýchla hnedá líška preskočí lenivého psa.";
nech výraz = /The/gi;
nech newString = string.replace (výraz, "a");
konzoly.log (newString); // "rýchla hnedá líška preskočí lenivého psa."
Tento príklad volá nahradiť () metóda na reťazec premenná, odovzdávajúca regulárny výraz, výraz. Regulárny výraz sa bude zhodovať so všetkými výskytmi „The“ v reťazci bez ohľadu na veľkosť písmen. Volanie metódy replace jej prikáže nahradiť každý výskyt reťazcom „a“.
Úvahy o výkonnosti pri používaní regulárnych výrazov
Aj keď regulárne výrazy pomáhajú pri porovnávaní reťazcov a manipulácii s nimi, môžu byť aj nákladné z hľadiska výkonu. Aby boli vzory čo najšpecifickejšie a aby boli jednoduché, je dôležité, aby boli funkčné.