Zpětné vyhledávání pomocí JavaScriptu

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!