Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne]Wyrażenia regularne - złożony wzór
Forum PHP.pl > Forum > Przedszkole
115750
Próbuję ułożyć wzór na wyrażenie regularne, które będzie zwracało prawdę, gdy w dowolnym miejscu tekstu będzie jedno ze słów pies|kot ale nie będzie zawierać słowa ryba.

Np. Ala ma kota, psa i chomika ==> prawda
Ala ma kota, a w akwarium pływa ryba ==> fałsz.

Próbowałem na różne sposoby np.
Cytat
.*(psa|kota|)!(ryba).*

ale nie mogę ułożyć sad.gif
nospor
A nie mozesz najpierw sprawdzic czy jest pies|kot a potem sprawdzic czy jest ryba?
115750
Niestety wszystko muszę zrobić w jednym wyrażeniu.
nospor
Taki wymog w szkole czy ty tak sobie zalozyles?
115750
Taki wymóg ale nie w szkole lecz w programie. Pozwala on wpisać tylko 1 wyrażanie.
Pyton_000
/(kota|psa)(?!.*ryba)/
115750
Dziękuję, jest prawie dobrze ale niestety przepuszcza wyrażenia typu: "ryba jest ale nie ma psa i kota."
trzczy
  1. (kota|psa)(?=.*ryba)|ryba(?=.*kota|psa)|^(?!.*kota|psa)

Z tym że to pokaże fałsz, a nie prawdę, kiedy będzie pies lub kot bez ryby. Czyli trzeba wynik zaprzeczyć w php.
viking
  1. /^(?!.*ryba\b).*(kota|psa).*/gm
115750
Dziękuję wszystkim za pomoc.
Metodą prób i błędów doszedłem do optymalnego wzoru:

Kod
^(?!.*ryb)(?=.*(?:kot|psa))(?!.*ryb)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.