- może to być jedno słowo
- może to być kilka słów oddzielonych pojedynczą spacją
Podane wyrażenia mają celowo uproszczone zakresy i nie tylko, aby zwiększyć czytelność
Wykrywanie jednego słowa: /^[a-z]+$/
Wykrywanie dwóch słów oddzielonych pojedynczą spacją (\s nie używam celowo): /^[a-z]+ [a-z]+$/
No ale w jednym ciągu może być jednocześnie jedno, dwa lub więcej słów. W związku z czym chciałem połączyć to w jedno wyrażenie regularne, zastosowałem więc alternatywę: /^(?:[a-z]+)|(?:(?:[a-z]+ )+)$/
Akceptuje wyrażenia: a, a b, a b c. Ale również zostają przyjęte wyrażenia, w których występuje kilka spacji.. czyli wyrażenie: a b przejdzie walidację.
Mógłbym to z poziomu funkcji PHP sprawdzić, czy istnieje gdzieś ciąg ' ' (dwie spacje), który wykryłby dwa lub więcej białych znaków, ale chciałbym to rozwiązać na poziomie wyrażenia regularnego :>
Próbowałem też tego: /^(?:[a-z]+)|(?:(?:[a-z]+ [a-z]+)+)$/, ale przyniosło dokładnie taki sam efekt jak przedtem.
Dla Waszej wygody:
{ } else { }
Jest pewnie jakieś proste rozwiązanie mojego problemu, próbowałem z zachłannością i leniwością, ale bez skutku (i tak to nic chyba nie pomoże w tym przypadku).
Jak mówiłem uprościłem to maksymalnie jak się da, żeby tylko było łatwo odczytać treść;) Nie widzę tu błędu logicznego, a możliwe, że taki tu istnieje.
Proszę o pomoc i pozdrawiam,
Aravorn