Autor Zpráva
RastyAmateur
Profil
Dobrý večer,

narazil jsem na jeden takový problém, který se mi zprvu zdál jednoduchý, ale nějak na to nemohu přijít. Přijde mi, že stále přehlížím nějakou jednoduchou věc, ale ať dělám co dělám, nemohu na to přijít... (asi potřebuji pauzu :-) )

Potřebuji vytvořit regulární výraz, který mi schválí pouze takové řetězce, která nezačínají na určitá slova (například "auto" a "str")
automechanik  // ne
atomovka  // ano
strážce  // ne
stopka  // ano

Věřím, že je to jasné.

Děkuji, RA


Vyřešeno.

Jako tahák na regulární výrazy vždy používám regularnivyrazy.info, na kterých ovšem není uvedená kombinace (?!...). Vygoogloval jsem si (bohužel pozdě) podobný problém a použil řešení z něj.

Pokud opět něco nepřehlížím, regulární výraz ^(?!str|auto)([^\s]+)$ by měl být dostačující.
juriad
Profil
Jednodušší je negace:
/^(str|auto)/
RastyAmateur
Profil
juriad:
Já to potřeboval na adresy do .htaccess. Pokud se nepletu, tento výraz by znamenal vezmi všechny řetězce začínající na "str" nebo "auto" (teď jsem to v rychlosti pro jistotu zkusil a pravděpodobně se nepletu).
juriad
Profil
RastyAmateur:
Ano, přesně to znamená. Ty ale můžeš v .htaccess mít negované podmínky:

RewriteCond %{REQUEST_URI} !^/(str|auto)
RewriteRule to-co-chceš
RastyAmateur
Profil
juriad:
O RewriteCond jsem již slyšel, tak nějak tuším, co to dělá, ale nikdy jsem s tím nedělal. Mohl bys mi, prosím, podat nějaký rychlý a stručný návod? Něco málo už jsem párkrát hledal, ale můj pokus nebyl nejúspěšnější...
Avšak až moc do hloubky jsem to neprozkoumával, protože jsem to nikdy akutně nepotřeboval...
Keeehi
Profil
Je to jednoduché, RewriteCond musí být splněna, aby se vůbec následující RewriteRule začalo vyhodnocovat. Pokud splněna není, RewriteRule se přeskočí.
RastyAmateur
Profil
Keeehi:
A když je více RewriteCond za sebou, tak se vyhodnocují do doby, než se jedna z nich nesplní, v tom případě se přeskočí na první následující RewriteRule a pokračuje se příkazem pod ním?
Radek9
Profil
RastyAmateur:
Ano. Několik RewriteCond příkazů pod sebou funguje jako logický and.
Davex
Profil
Keeehi:
Je to jednoduché, RewriteCond musí být splněna, aby se vůbec následující RewriteRule začalo vyhodnocovat.
Zjednodušeně pro snadnější pochopení ano, ale ve skutečnosti to funguje naopak a pokud RewriteRule nevyhovuje, tak už se související podmínky RewriteCond nevyhodnocují.

Nejpřehlednější je to asi ukázat na obrázku:

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: