Z nějakého důvodu si myslím, že regulární výrazy dokážou vyřešit každý problém, a z nějakého důvodu vždy zjistím, že regulární výraz, který se snažím vytvořit, je příliš komplikovaný a pravděpodobně to není nejlepší cesta k tomu, jak získat to, co chci. Příklad: Potřeboval jsem vytvořit regulární výraz, který by neměl odpovídat řetězci. Já ne chcete porovnat řetězec, který obsahuje [requires-login]
ale chtějí odpovídat všemu ostatnímu. Nechme teď stranou proč, zde je návod, jak jsem dosáhl toho, co jsem chtěl:
// Adding extra forward slashes for "[" and "]" var regex = '^(?!.*?\\[requires-login\\])'; // Compile var re = new RegExp(regex);
Tak proč to chci udělat? V rámci svých interních testů na straně klienta označuji testy vyžadující přihlášení jako [requires-login]
a pokud uživatelské jméno a heslo nezadáte přes příkazový řádek, chci tyto testy přeskočit. V tom případě využívám grep
stážisty funkce pro porovnání testů bez zadaného řetězce. Raději bych označil několik testů [requires-login]
místo označení většiny z nich jako [no-login]
.
Někdy chcete ve světě vývoje webu dělat věci, které nejsou ideální, ale prostě je potřebujete provést v rámci dané sady parametrů. Tohle je jeden z těch případů. Nakonec to musíte udělat, a v tomto případě jsem to udělal!