Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyrażenia regularne
Forum PHP.pl > Forum > Przedszkole
djtomaszq
Czy można napisać wyrażenie żeby miedzy dwoma słowami była tylko jedna spacja ale nie koniecznie.
Np. "Kraków" czy "Nowy ¦wit" było poprawnie ale już "Nowy ¦wit(dwie spacje w ¶rodku)" czy "Nowy ¶wit mazowiecki (3 spacje po 3 wyrazach)" już było błędem?
castagir
  1. /^([a-zA-Z±ćęłń󶿼ˇĆĘŁŃӦݬ ])$/
trueblue
(([a-zA-Z±ćęłń󶿼ˇĆĘŁŃӦݬ]+)(\s){0,1}){1,2}
Crozin
1. Za listowanie pojedynczych liter w wyrażeniach (np.: ±, ¬) powinno się palce łamać. Od tego s± klasy \pL by okre¶lać "wszystkie litery".
2.
Kod
^(?:[\pL]+)(?: [\pL]+)*$
A tutaj wytłumaczenie https://regex101.com/r/mH3dO8/3
djtomaszq
Cytat(Crozin @ 9.06.2016, 13:25:19 ) *
1. Za listowanie pojedynczych liter w wyrażeniach (np.: ±, ¬) powinno się palce łamać. Od tego s± klasy \pL by okre¶lać "wszystkie litery".
2.
Kod
^(?:[\pL]+)(?: [\pL]+)*$
A tutaj wytłumaczenie https://regex101.com/r/mH3dO8/3


1. Jak wpiszę "ę, ±" to wy¶wietla mi false
2. A jak dodać aby była tylko 1 spacja w stringu lub 2 itp ?
Crozin
Cytat
Jak wpiszę "ę, ±" to wy¶wietla mi false
Pokaż kod.
Cytat
A jak dodać aby była tylko 1 spacja w stringu lub 2 itp ?
Tylko jedna:
Kod
^(?:[\pL]+)(?: [\pL]+)?$
Maksymalnie 2:
Kod
^(?:[\pL]+)(?: [\pL]+){,2}$
djtomaszq
Z tym kodem zwraca 0. Może co¶ być z konfiguracj± serwera ?
  1. $wyrazenie = "@^(?:[0-9\pL]+)(?: [0-9\pL]+)*$@";
  2. $imie = preg_match($wyrazenie, $_POST['imie']);
  3. echo $imie;


I pytanie je¶li chce jeszcze aby mogły być cyfry to dobrze to dodałem do wyrażenia? [0-9]

Cytat(Crozin @ 9.06.2016, 15:26:05 ) *
Maksymalnie 2:
Kod
^(?:[\pL]+)(?: [\pL]+){,2}$

Ten kod zawsze zwraca zero, co bym nie napisał

  1. $wyrazenie = "@^(?:[\pL]+)(?: [\pL]+){,2}$@";
  2. $imie = preg_match($wyrazenie, $_POST['imie']);
  3. echo $imie;
Crozin
Dodaj modyfikator u do wyrażenia: http://ideone.com/XZ7KVj
djtomaszq
A co z drugim problemem? Nie działa to dla max 2 spacji

Kto¶ mógłby podpowiedzieć czemu nie działa to:
  1. $wyrazenie = "@^(?:[\pL]+)(?: [\pL]+){,2}$@";
  2. $imie = preg_match($wyrazenie, $_POST['imie']);
  3. echo $imie;


tzn zwraca zawsze 0
Crozin
Nie dodałe¶ modyfikatora "u".
djtomaszq
Cytat(Crozin @ 10.06.2016, 10:12:24 ) *
Nie dodałe¶ modyfikatora "u".

  1. $wyrazenie = "@^(?:[\pL]+)(?: [\pL]+){,2}$@u";


Też wyskakuje 0 ci±gle
LowiczakPL
Nie pro¶ciej jest skasować powielenie spacji, i zapisać jako 1 spację.



djtomaszq
Tzn?
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.