JavaScript Regex:Řetězec neobsahuje

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!