Vítejte v tomto kompletním průvodci regulárními výrazy v JavaScriptu! V tomto článku podrobně prozkoumáme, co jsou regulární výrazy, jak se používají v JavaScriptu a jak vám mohou pomoci zjednodušit a optimalizovat váš kód. Od základů až po praktické příklady probereme vše, co potřebujete vědět, abyste mohli začít naplno využívat regulární výrazy ve svých projektech JavaScript. Pojďme tedy začít!
Úvod do regulárních výrazů
Regulární výrazy jsou vyhledávací vzory používané k nalezení a manipulaci s textem ve znakových řetězcích. Skládají se z kombinace doslovných znaků a metaznaků, které definují specifická pravidla pro hledání shod v textu. Tato pravidla mohou zahrnovat vyhledávání konkrétních znaků, rozsahů znaků, opakování, alternativ a mnoho dalšího.
V JavaScriptu se regulární výrazy vytvářejí pomocí třídy RegExp nebo pomocí doslovného /patrón/. Vzor je samotný regulární výraz, který je uzavřen mezi lomítky. Podívejme se na jednoduchý příklad:
const regex = /hola/;
V tomto příkladu jsme vytvořili regulární výraz, který bude v textu hledat řetězec „ahoj“. Nyní, když máme základní znalosti o tom, co jsou regulární výrazy, pojďme prozkoumat některé klíčové koncepty a pokročilé techniky pro práci s nimi v JavaScriptu.
Základní syntaxe regulárních výrazů
Regulární výrazy v JavaScriptu se skládají z několika klíčových prvků, které nám umožňují definovat složitější vzorce vyhledávání. Tyto prvky zahrnují doslovné znaky, metaznaky, třídy znaků, kvantifikátory, kotvy a další. Podívejme se na některé příklady těchto prvků:
Doslovné postavy
Doslovné znaky jsou ty, které se hledají tak, jak se objevují v textu. Například regulární výraz /hola/ vyhledá v textovém řetězci sekvenci znaků „ahoj“. Je důležité si uvědomit, že regulární výrazy rozlišují velká a malá písmena /hola/ nebude odpovídat "Ahoj" nebo "AHOJ".
Metaznaky
Metaznaky jsou speciální znaky, které mají v regulárních výrazech zvláštní význam. Například metaznak . Používá se k reprezentaci libovolného znaku kromě nového řádku. Dalším společným metaznakem je ^, který se používá k označení začátku textového řetězce. Například regulární výraz /^hola/ bude odpovídat libovolnému textovému řetězci, který začíná "ahoj".
Třídy postav
Třídy znaků se používají k hledání jakéhokoli znaku v rámci konkrétní sady. Například regulární výraz /[aeiou]/ bude odpovídat jakékoli samohlásce v textovém řetězci. Ve třídách znaků je také možné použít rozsahy znaků. Například regulární výraz /[a-z]/ bude odpovídat jakémukoli malému písmenu.
Kvantifikátory
Kvantifikátory se používají k určení počtu výskytů prvku v regulárním výrazu. Například kvantifikátor * označuje, že předchozí prvek se může objevit nulakrát nebo vícekrát. Kvantifikátor + označuje, že předchozí prvek by se měl objevit jednou nebo vícekrát. Například regulární výraz /a+/ bude odpovídat jednomu nebo více "a" v textovém řetězci.
Kotvy
Kotvy se používají k označení pozice shody v textovém řetězci. Například kotva \b odpovídá hranici slova. Například regulární výraz /bholab/ bude odpovídat pouze slovu "ahoj" jako a plné slovo, aniž by odpovídala delším slovům, která obsahují „ahoj“ jako jejich součást.
Toto je jen několik příkladů základní syntaxe regulárních výrazů v JavaScriptu. V průběhu tohoto článku prozkoumáme pokročilejší koncepty a techniky pro práci s regulárními výrazy v JavaScriptu.
Základní vyhledávání shod
Jednou z nejběžnějších operací prováděných s regulárními výrazy je hledání shod v textovém řetězci. V JavaScriptu můžeme použít metodu search() najít první shodu regulárního výrazu v textovém řetězci. Podívejme se na příklad:
const texto = "¡Hola, mundo!"; const regex = /mundo/; const indice = texto.search(regex); console.log(indice); // 7
V tomto příkladu jsme použili metodu search() najít první shodu regulárního výrazu /mundo/ v textovém řetězci "Ahoj, světe!" Metoda search() vrátí index první nalezené shody nebo -1, pokud není nalezena žádná shoda.
Kromě metody search(), JavaScript poskytuje i další užitečné metody pro práci s regulárními výrazy, jako např match(), replace(), split() y test(). Každá z těchto metod má svůj vlastní účel a lze ji použít podle vašich specifických potřeb.
Použití modifikátorů a příznaků
V JavaScriptu mohou regulární výrazy obsahovat modifikátory a příznaky, které umožňují flexibilnější a přizpůsobené vyhledávání. Modifikátory se přidávají na konec regulárního výrazu a upravují jeho chování. Některé z nejběžnějších modifikátorů jsou:
já (necitlivý)
Modifikátor i se používá k vyhledávání bez ohledu na velikost písmen. Například regulární výraz /hola/i bude odpovídat jak „ahoj“, tak „ahoj“ nebo „AHOJ“.
g (globální)
Modifikátor g Používá se k provedení globálního vyhledávání v celém textovém řetězci namísto zastavení u první nalezené shody. Například regulární výraz /a+/g bude odpovídat všem výskytům jednoho nebo více "a" v textovém řetězci.
m (víceřádkový)
Modifikátor m Používá se k vyhledávání na více řádcích v rámci textového řetězce. Například regulární výraz /^hola/m bude odpovídat slovu "ahoj" na začátku každého řádku v textovém řetězci.
Kromě modifikátorů umožňuje JavaScript také použití příznaků v regulárních výrazech. Příznaky se přidávají za druhé lomítko při vytváření regulárního výrazu pomocí třídy RegExp. Některé z nejběžnějších příznaků jsou:
já (necitlivý)
Stejně jako modifikátor i, vlajka i provádí vyhledávání bez ohledu na velikost písmen. Například regulární výraz new RegExp("hola", "i") bude odpovídat jak „ahoj“, tak „ahoj“ nebo „AHOJ“.
g (globální)
Stejně jako modifikátor g, vlajka g provede globální vyhledávání celého textového řetězce. Například regulární výraz new RegExp("a+", "g") bude odpovídat všem výskytům jednoho nebo více "a" v textovém řetězci.
m (víceřádkový)
Stejně jako modifikátor m, vlajka m provádí vyhledávání na více řádcích v rámci textového řetězce. Například regulární výraz new RegExp("^hola", "m") bude odpovídat slovu "ahoj" na začátku každého řádku v textovém řetězci.
Používání modifikátorů a příznaků v regulárních výrazech JavaScriptu může být velmi užitečné pro přizpůsobení vyhledávání různým případům a specifickým požadavkům. Experimentujte s nimi a objevte, jak můžete tyto funkce ve svém kódu co nejlépe využít.
Metaznaky a speciální znaky
Metaznaky a speciální znaky jsou klíčovými prvky regulárních výrazů, které nám umožňují provádět výkonnější a flexibilnější vyhledávání. Některé metaznaky jsme již zmínili, např . y ^, ale existuje mnoho dalších, které můžete použít ve svých regulárních výrazech. Podívejme se na některé z nejběžnějších metaznaků a speciálních znaků:
. (směřovat)
Metaznak . Používá se k reprezentaci libovolného znaku kromě nového řádku. Například regulární výraz /h.t/ bude odpovídat výrazu „klobouk“, „horký“, „hit“ a jakémukoli jinému třípísmennému slovu, které začíná na „h“ a končí na „t“.
\ (obrácené lomítko)
Zpětné lomítko se používá k escapování speciálních znaků v regulárním výrazu. Chcete-li například vyhledat doslovnou tečku v textovém řetězci, musíte ji ukončit pomocí zpětného lomítka. Regulární výraz /www\.google\.com/ bude odpovídat textovému řetězci „www.google.com“.
\d (číslice)
Metaznak \d se používá k hledání libovolné číslice od 0 do 9. Například regulární výraz /\d+/ bude odpovídat libovolnému jednomu nebo více číslům v textovém řetězci.
\w (alfanumerický znak)
Metaznak \w slouží k vyhledávání libovolného alfanumerického znaku (velká a malá písmena, číslice a podtržítka). Například regulární výraz /\w+/ bude odpovídat libovolnému slovu z jednoho nebo více alfanumerických znaků v textovém řetězci.
Toto je jen několik příkladů metaznaků a speciálních znaků, které můžete použít ve svých regulárních výrazech. Jak se blíže seznámíte s regulárními výrazy v JavaScriptu, objevíte širokou škálu možností pro upřesnění vyhledávání a manipulace s textem.
Třídy a rozsahy postav
Třídy znaků jsou dalším klíčovým prvkem v regulárních výrazech, který nám umožňuje hledat jakýkoli znak v rámci konkrétní sady. V JavaScriptu můžeme použít hranaté závorky [] k definování třídy znaků. Podívejme se na některé příklady tříd a rozsahů znaků:
[aeiou]
Třída postavy [aeiou] bude odpovídat jakékoli samohlásce v textovém řetězci. Například regulární výraz /[aeiou]/ bude odpovídat "a", "e", "i", "o" nebo "u" v textovém řetězci.
[az]
Rozsah znaků [a-z] bude odpovídat jakémukoli malému písmenu v anglické abecedě. Například regulární výraz /[a-z]/ bude odpovídat jakémukoli malému písmenu v textovém řetězci.
[0-9]
Rozsah znaků [0-9] bude odpovídat jakékoli číslici od 0 do 9 v textovém řetězci. Například regulární výraz /[0-9]/ bude odpovídat jakémukoli jednocifernému číslu.
[A-Z-z]
Třída postavy [A-Za-z] bude odpovídat jakémukoli velkému nebo malému písmenu v anglické abecedě. Například regulární výraz /[A-Za-z]/ bude odpovídat libovolnému písmenu v textovém řetězci.
Třídy a rozsahy znaků nám umožňují definovat konkrétní sady znaků, které se mají hledat v regulárním výrazu. Použijte je k přizpůsobení vyhledávání vašim konkrétním potřebám a omezením.
Kvantifikátory a opakování
Kvantifikátory a opakování jsou klíčové prvky v regulárních výrazech, které nám umožňují určit počet výskytů prvku v textovém řetězci. Podívejme se na některé z nejběžnějších kvantifikátorů v JavaScriptu:
* (hvězdička)
Kvantifikátor * označuje, že předchozí prvek se může objevit nulakrát nebo vícekrát. Například regulární výraz /a*/ bude odpovídat nule nebo více 'a' v textovém řetězci.
+ (více)
Kvantifikátor + označuje, že předchozí prvek by se měl objevit jednou nebo vícekrát. Například regulární výraz /a+/ bude odpovídat jednomu nebo více "a" v textovém řetězci.
? (otázka)
Kvantifikátor ? označuje, že předchozí prvek se může objevit nula nebo jednou. Například regulární výraz /colou?r/ bude odpovídat jak „barva“ tak „barva“.
{n} (přesně nkrát)
Kvantifikátor {n} znamená, že předchozí prvek se musí objevit přesně nkrát. Například regulární výraz /a{3}/ bude odpovídat přesně třem "a" v textovém řetězci.
{n,} (alespoň nkrát)
Kvantifikátor {n,} znamená, že předchozí prvek se musí objevit alespoň nkrát. Například regulární výraz /a{2,}/ bude odpovídat dvěma nebo více 'a' v textovém řetězci.
{n,m}
Kvantifikátor {n,m} znamená, že předchozí prvek se musí objevit alespoň nkrát a maximálně mkrát. Například regulární výraz /a{2,4}/ bude odpovídat dvěma, třem nebo čtyřem "a" v textovém řetězci.
Toto je jen několik příkladů kvantifikátorů, které můžete použít ve svých regulárních výrazech. Kvantifikátory nám umožňují specifikovat vzorce opakování v textovém vyhledávání a manipulaci, což usnadňuje extrahování konkrétních informací z textových řetězců.
Kotvy a hranice slov
Kotvy a hranice slov jsou prvky, které nám umožňují označit pozici shody v textovém řetězci. Tyto prvky jsou zvláště užitečné, když chceme hledat celá slova nebo se ujistit, že je shoda na začátku nebo na konci řádku. Podívejme se na některé příklady kotev a hranic slov:
\b (hranice slova)
Slovo limit \b odpovídá hranici mezi alfanumerickým znakem a nealfanumerickým znakem. Například regulární výraz /\bjavascript\b/ bude odpovídat pouze slovu „javascript“ jako úplnému slovu, nikoli delším slovům, která obsahují „javascript“ jako jejich součást.
^ (začátek řádku)
Postava ^ Používá se k označení začátku řádku v textovém řetězci. Například regulární výraz /^hola/ bude odpovídat slovu "ahoj" na začátku každého řádku v textovém řetězci.
$ (konec řádku)
Postava $ Používá se k označení konce řádku v textovém řetězci. Například regulární výraz /mundo$/ bude odpovídat slovu "svět" na konci každého řádku v textovém řetězci.
\A (začátek textu)
Postava \A Používá se k označení začátku veškerého textu v textovém řetězci, nikoli pouze začátku řádku. Například regulární výraz /^\AHola/ bude odpovídat slovu „Ahoj“ na začátku celého textu.
\Z (konec textu)
Postava \Z se používá k označení konce veškerého textu v textovém řetězci, nikoli pouze konce řádku. Například regulární výraz /Mundo\Z/ bude odpovídat slovu "Svět" na konci celého textu.
Kotvy a hranice slov nám umožňují vyhledávat shody na konkrétních místech v textovém řetězci, což může být užitečné v situacích, kdy chceme zajistit, aby shoda byla na konkrétní pozici.
Skupiny a zachycení
Skupiny a zachycení jsou pokročilé prvky v regulárních výrazech, které nám umožňují seskupit podvýrazy a zachytit je pro pozdější použití. Podívejme se, jak fungují skupiny a zachycení:
( ) (závorky)
Závorky jsou Používají se ke skupinám podvýrazy v regulárním výrazu. Například regulární výraz /(d{2})-(d{2})-(d{4})/ se slouží k hledání data ve formátu „dd-mm-rrrr. Skupiny ( ) Umožňují nám samostatně zachytit hodnoty dne, měsíce a roku.
\1, \2, \3 (odkazy na skupiny)
Odkazy na skupiny se používají k odkazování na dříve zachycené skupiny v regulárním výrazu. Například regulární výraz /(\w+) \1/ se bude shodovat s jakýmkoli slovem, za nímž následuje opakování stejného slova. Například „ahoj ahoj“, „světe světe“ atd.
?: (nezachycující skupina)
Symbol ?: Používá se k vytvoření nezachycujících skupin. Tyto skupiny se používají, když chceme seskupit podvýrazy, ale nechceme zachytit výsledek. Například regulární výraz /https?:\/\/(?:www\.)?google\.com/ bude odpovídat „http://www.google.com“ i „https://google.com“, ale zachytí pouze relevantní část adresy URL.
Skupiny a zachycení nám umožňují strukturovat a organizovat regulární výrazy efektivnějším a čitelnějším způsobem. Také nám dávají možnost zachytit konkrétní hodnoty pro pozdější použití v našich aplikacích.
Užitečné metody pro práci s regulárními výrazy
JavaScript poskytuje několik užitečných metod pro práci s regulárními výrazy. Tyto metody nám umožňují provádět běžné operace, jako je vyhledávání, nahrazování a rozdělování textových řetězců pomocí regulárních výrazů. Podívejme se na některé z těchto metod:
zápas()
Metoda match() Používá se k nalezení všech shod regulárního výrazu v textovém řetězci a vrácení pole s výsledky. Například:
const texto = "¡Hola, mundo!"; const regex = /o/g; const coincidencias = texto.match(regex); console.log(coincidencias); // ["o", "o"]
V tomto příkladu jsme použili metodu match() najít všechny shody regulárního výrazu /o/g v textovém řetězci "Ahoj, světe!" Metoda match() vrátí pole se všemi nalezenými shodami.
nahradit ()
Metoda replace() se používá k nahrazení shod regulárního výrazu v textovém řetězci novou hodnotou. Například:
const texto = "¡Hola, mundo!"; const regex = /mundo/; const nuevoTexto = texto.replace(regex, "amigo"); console.log(nuevoTexto); // "¡Hola, amigo!"
V tomto příkladu jsme použili metodu replace() nahradit shodu s regulárním výrazem /mundo/ v textovém řetězci "Ahoj, světe!" pro slovo „přítel“. Metoda replace() vrátí nový textový řetězec s provedenými náhradami.
rozdělit()
Metoda split() se používá k rozdělení textového řetězce na pole podřetězců pomocí regulárního výrazu jako oddělovače. Například:
const texto = "Hola,mundo,amigo"; const regex = /,/g; const subcadenas = texto.split(regex); console.log(subcadenas); // ["Hola", "mundo", "amigo"]
V tomto příkladu jsme použili metodu split() k rozdělení textového řetězce "Ahoj, světe, příteli" na pole podřetězců pomocí regulárního výrazu /,/g jako oddělovač. Metoda split() vrátí pole s výslednými podřetězci.
test()
Metoda test() Používá se ke kontrole, zda má regulární výraz nějaké shody v textovém řetězci. Metoda se vrací true pokud dojde ke shodě a false jinak. Například:
const texto = "Hola, mundo!"; const regex = /mundo/; const resultado = regex.test(texto); console.log(resultado); // true
V tomto příkladu jsme použili metodu test() zkontrolovat, zda regulární výraz /mundo/ má nějaké shody v textovém řetězci "Ahoj, světe!". Metoda test() přinést zpět true protože existuje náhoda.
To jsou jen některé z nejběžnějších metod pro práci s regulárními výrazy v JavaScriptu. Každá z těchto metod má svůj vlastní účel a lze ji použít podle vašich specifických potřeb. Experimentujte s nimi a objevte, jak vám mohou usnadnit a urychlit práci s regulárními výrazy.
Preguntas frecuentes
Co jsou regulární výrazy v JavaScriptu? Regulární výrazy v JavaScriptu jsou vyhledávací vzory používané k vyhledávání a manipulaci s textem v řetězcích znaků.
Jak vytvořit regulární výrazy v JavaScriptu? Regulární výrazy v JavaScriptu se vytvářejí pomocí třídy RegExp nebo pomocí doslovného /patrón/.
Jaký je rozdíl mezi modifikátory a příznaky v regulárních výrazech? Modifikátory se přidávají na konec regulárního výrazu a upravují jeho chování. Příznaky se přidávají za druhé lomítko při vytváření regulárního výrazu pomocí třídy RegExp.
Jaký je rozdíl mezi metodou match() a způsob test()? Metoda match() Používá se k nalezení všech shod regulárního výrazu v textovém řetězci a vrací pole s výsledky. Metoda test() Používá se ke kontrole, zda má regulární výraz nějaké shody v textovém řetězci, a vrací booleovskou hodnotu.
Jak mohu zachytit konkrétní hodnoty pomocí skupin v regulárním výrazu? Skupiny ( ) v regulárním výrazu umožňují zachytit konkrétní podvýrazy. Na tyto skupiny pak můžete odkazovat pomocí odkazů \1, \2, Etc.
Jaké metody mohu použít pro práci s regulárními výrazy v JavaScriptu? Některé užitečné metody pro práci s regulárními výrazy v JavaScriptu jsou match(), replace(), split() y test(). Každá z těchto metod má svůj vlastní účel a lze ji použít podle vašich specifických potřeb.
Závěr
Regulární výrazy jsou mocným nástrojem pro práci s textem v JavaScriptu. Pochopení základů , syntaxe a pokročilých technik regulárních výrazů vám umožní efektivně a přesně vyhledávat, nahrazovat a manipulovat s textovými řetězci. Od základního porovnávání až po používání modifikátorů, skupin a dalších užitečných metod jste se naučili, jak co nejlépe využít regulární výrazy ve vašich projektech v JavaScriptu.
Nezapomeňte cvičit a experimentovat s různými vzory a případy použití, abyste posílili své porozumění a obeznámenost s regulárními výrazy. Neváhejte použít regulární výrazy ke zlepšení efektivity a kvality vašeho kódu!
Index
- 1 Úvod do regulárních výrazů
- 2 Základní syntaxe regulárních výrazů
- 3 Základní vyhledávání shod
- 4 Použití modifikátorů a příznaků
- 5 Metaznaky a speciální znaky
- 6 Třídy a rozsahy postav
- 7 Kvantifikátory a opakování
- 8 Kotvy a hranice slov
- 9 Skupiny a zachycení
- 10 Užitečné metody pro práci s regulárními výrazy
- 11 Preguntas frecuentes
- 12 Závěr