Čitatelia ako vy pomáhajú podporovať MUO. Keď uskutočníte nákup pomocou odkazov na našej stránke, môžeme získať pridruženú províziu. Čítaj viac.

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;
instagram viewer

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é.