Vždy jsem miloval zkoumání regulárních výrazů, protože jsou jednou z dovedností, které se ve škole nikdy neučí – musíte si je osvojit za chodu, pokazit je a během cesty je opravovat. Regexy jsou neuvěřitelně výkonné a jedna schopnost, kterou mají, se označuje jako zpětné reference, které vám v podstatě umožňují použít shodu v rámci stejného regulárního výrazu.
Nejjednodušší způsob, jak vysvětlit zpětnou referenci, je s jednoduchým cílem:pomocí regulárního výrazu k simulaci destrukcí. Vezměte následující fragment kódu:
const body = document.blah.body;
Díky úžasné nové jazykové funkci, jako je destrukce JavaScriptu, je lepší způsob, jak napsat výše uvedený kód:
const { body } = document.blah;
Poznámka:Jako obecné programovací pravidlo je použití regulárních výrazů k implementaci nebo simulaci jazykových funkcí velmi špatný nápad. Pro vysvětlení zpětných referencí je to ale perfektní.
Syntaxe zpětného odkazu je \{number of match}
:
const code = "const body = document.blah.body;"; const destrcutured = code.replace(/const (\w+) = ([A-z\.]+)\.\1;/, "const { $1 } = $2;"); // const { body } = document.blah";
Ve výše uvedeném příkladu používáme \1
odkazovat na první shodu ve stejném výrazu. Potom použijeme $1
odrážet odpovídající (\w+)
a $2
odrážet řetězec objektů (([A-z.]+)
). S \{#}
můžete použít libovolný počet zpětných referencí syntax. Uvědomte si, že zpětné odkazy zatěžují výkon:některé nástroje jako VS Code je nepodporují; Atom editor podporuje zpětné odkazy.
Regulární výrazy jsou vždy dobrodružstvím a vždy je co učit. Moje oblíbená část regulárních výrazů je, jak jediný znak může drasticky změnit výsledek – taková síla ve zhuštěném množství kódu!