Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Wyrażenia regularne
djtomaszq
post 9.06.2016, 11:20:03
Post #1





Grupa: Zarejestrowani
Postów: 188
Pomógł: 0
Dołączył: 5.07.2015

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
castagir
post 9.06.2016, 11:43:20
Post #2





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

Ostrzeżenie: (10%)
X----


  1. /^([a-zA-ZąćęłńóśżźĄĆĘŁŃÓŚŻŹ ])$/


Ten post edytował castagir 9.06.2016, 11:44:57
Go to the top of the page
+Quote Post
trueblue
post 9.06.2016, 12:12:34
Post #3





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


(([a-zA-ZąćęłńóśżźĄĆĘŁŃÓŚŻŹ]+)(\s){0,1}){1,2}


--------------------
Go to the top of the page
+Quote Post
Crozin
post 9.06.2016, 12:25:19
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
djtomaszq
post 9.06.2016, 14:20:51
Post #5





Grupa: Zarejestrowani
Postów: 188
Pomógł: 0
Dołączył: 5.07.2015

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post
Crozin
post 9.06.2016, 14:26:05
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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}$
Go to the top of the page
+Quote Post
djtomaszq
post 9.06.2016, 14:36:12
Post #7





Grupa: Zarejestrowani
Postów: 188
Pomógł: 0
Dołączył: 5.07.2015

Ostrzeżenie: (0%)
-----


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;
Go to the top of the page
+Quote Post
Crozin
post 9.06.2016, 14:45:47
Post #8





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Dodaj modyfikator u do wyrażenia: http://ideone.com/XZ7KVj
Go to the top of the page
+Quote Post
djtomaszq
post 10.06.2016, 08:45:36
Post #9





Grupa: Zarejestrowani
Postów: 188
Pomógł: 0
Dołączył: 5.07.2015

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Crozin
post 10.06.2016, 09:12:24
Post #10





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Nie dodałeś modyfikatora "u".
Go to the top of the page
+Quote Post
djtomaszq
post 11.06.2016, 10:03:06
Post #11





Grupa: Zarejestrowani
Postów: 188
Pomógł: 0
Dołączył: 5.07.2015

Ostrzeżenie: (0%)
-----


Cytat(Crozin @ 10.06.2016, 10:12:24 ) *
Nie dodałeś modyfikatora "u".

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


Też wyskakuje 0 ciągle
Go to the top of the page
+Quote Post
LowiczakPL
post 11.06.2016, 11:07:12
Post #12





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

Ostrzeżenie: (0%)
-----


Nie prościej jest skasować powielenie spacji, i zapisać jako 1 spację.





--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
djtomaszq
post 12.06.2016, 06:59:01
Post #13





Grupa: Zarejestrowani
Postów: 188
Pomógł: 0
Dołączył: 5.07.2015

Ostrzeżenie: (0%)
-----


Tzn?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.04.2024 - 13:52