This article has been localized into Czech by the community.
Přepínače/možnosti regulárních výrazů
V předchozím článku jsme se rychle podívali na to, jak lze regulární výraz použít společně s JavaScriptem k provedení jednoduchého vyhledávání v řetězci. Použili jsme velmi jednoduchý regulární výraz k demonstraci, ale regulární výrazy mohou být extrémně složité.
V důsledku této složitosti existuje také několik možností, které lze změnit při používání regulárních výrazů, což ovlivní, jak je konkrétní regex zpracováván interpretem JavaScriptu. Ačkoli obvykle o možnostech mluvíme jako o "nastavení" nebo "možnostech", v případě regulárních výrazů se jim říká příznaky (flags).
Příznaky jsou v podstatě jen sada možností, které můžete pro váš regulární výraz specifikovat, což ovlivní, jak bude reagovat na různé situace. Rychle vás provedu všemi, ale nejprve se podívejme na to, jak jsou specifikovány. Vezměte v úvahu tento příklad:
let regex = new RegExp("john");
let testString = "Hello, my name is John Doe!";
let hasMatch = regex.test(testString);
alert("Has match: " + hasMatch);
Specifikuji velmi jednoduchý regulární výraz (ve skutečnosti je tak jednoduchý, že bychom to mohli udělat i bez části s regexem, ale o to se teď nestarejte!), který bude hledat slovo "john". Pak toto testuji proti řetězci, který jasně obsahuje toto populární jméno, ale výsledek vás možná překvapí, protože zpráva bude:
Has match: false
Jak jsme již dříve zmínili, JavaScript je citlivý na velikost písmen, a to platí i pro regulární výrazy, alespoň ve výchozím nastavení. V tomto případě vyhledávání selže, protože hledáme "john", ale máme pouze "John" - ve světě citlivém na velikost písmen to nejsou stejná slova. Toto chování však můžeme velmi snadno změnit, protože jako volitelný druhý parametr při vytváření objektu RegExp můžeme specifikovat jednu nebo několik možností pomocí příznaků.
Příznak ignorování velikosti písmen: i
S velmi malou úpravou prvního řádku výše uvedeného příkladu můžeme způsobit, že regulární výraz zcela ignoruje velikost písmen, odtud název "ignore case" (ignorovat velikost písmen) nebo jednoduše jen "i", když je specifikován jako příznak. Takto to vypadá:
let regex = new RegExp("john", "i");
let testString = "Hello, my name is John Doe!";
let hasMatch = regex.test(testString);
alert("Has match: " + hasMatch);
Nyní bude výsledek mnohem pozitivnější:
Has match: true
Seznam příznaků
Zde je kompletní seznam dostupných příznaků. Některé jsou poměrně samovysvětlující, zatímco jiné jsou trochu složitější, zejména pokud přímo odkazují na chování různých operátorů regulárních výrazů. Prozatím jsou převážně pro referenci - vraťte se k nim, až budete mít lepší porozumění regulárním výrazům, protože je určitě budete v některém bodě potřebovat.
- g - Provádí globální vyhledávání - najde všechny shody, namísto pouze první shody.
- i - Ignoruje velikost písmen (diskutováno výše)
- m - Provádí vyhledávání na více řádcích. Chování operátorů regulárních výrazů ^ a $ se změní, aby toto odráželo.
- s - Umožňuje operátoru regulárního výrazu . (tečka) odpovídat i na znaky nového řádku.
- u - Povoluje podporu Unicode.
- y - Shody budou lepivé, hledají pouze přesnou pozici v textu.
Použití více příznaků
Můžete velmi snadno specifikovat více příznaků, pokud je to potřeba. Například můžete potřebovat provést vyhledávání bez ohledu na velikost písmen, na více řádcích, globálně, a to není problém - jednoduše zkombinujte všechny tři příznaky jako parametr, takto:
let regex = new RegExp("john", "gim");
Všimněte si, že mám "gim" jako parametr příznaků (globální, ignoruje velikost písmen, multiline). Pořadí příznaků nezáleží.
Příznaky s doslovnou notací regulárních výrazů
Příznaky mohou být specifikovány také, pokud používáte doslovnou notaci pro regulární výrazy - jednoduše jdou za poslední lomítko, takto:
let regex = /john/gim;
Tento regulární výraz, stejně jako ten výše, najde slovo "john" s použitím příznaků globální, ignoruje velikost písmen, multiline.
Shrnutí
Příznaky jsou možnosti, které můžete specifikovat pro metody v JavaScriptu, které používají vaše regulární výrazy. Máte možnost specifikovat jednu nebo několik možností. Některé z příznaků budeme používat v následujících článcích, kde se podrobněji podíváme na to, jak lze regulární výrazy v JavaScriptu používat.