![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
witam,
czy jest możliwość ułożenia takiego zapytania, które wymuszałoby obecność w stringu minimum 3 liter oraz dopuszczałoby podanie 1 myślnika? w skrócie: minimum 3 litery, maksimum 1 myślnik. po różnych kombinacjach wydaje mi się, że nie za bardzo. ale nie jestem w te klocki za dobry dlatego proszę o pomoc. pozdrawiam -------------------- aplikacje internetowe | Symfony
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 441 Pomógł: 71 Dołączył: 3.09.2007 Skąd: wrocław Ostrzeżenie: (0%) ![]() ![]() |
[a-zA-Z] - określa zakres znaków które mogą zostać użyte
[]{3} - mówi że muszą wystąpić 3 znaki z zakresu podanego w [] ? - mówi że znak który występuje przed nim musi wystąpić 0 lub 1 raz Chyba się nie pomyliłem, a to co potrzebujesz już sobie chyba sam złożysz Pozdrawiam -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
[a-zA-Z] - określa zakres znaków które mogą zostać użyte []{3} - mówi że muszą wystąpić 3 znaki z zakresu podanego w [] ? - mówi że znak który występuje przed nim musi wystąpić 0 lub 1 raz Chyba się nie pomyliłem, a to co potrzebujesz już sobie chyba sam złożysz Pozdrawiam doceniam Twoje dobre chęci, ale właśnie chodzi o to złożenie. te podstawy, o których napisałeś znam. np takie coś:
wyświetla ok, a nie powinno. -------------------- aplikacje internetowe | Symfony
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 441 Pomógł: 71 Dołączył: 3.09.2007 Skąd: wrocław Ostrzeżenie: (0%) ![]() ![]() |
może tak ? Ten post edytował zzeus 14.05.2009, 11:44:44 -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
może tak ? a widzisz, czyli to jednak nie takie proste:) nie ma co zgadywać - tego już próbowałem. EDIT: a może trzeba sprawdzać to w dwóch etapach? najpierw sprawdzić czy w całym ciągu znaków jest więcej niż jeden myślnik, jeśli tak od razu odrzucić. drugi etap to sprawdzenie czy występują minimum 3 litery. hmm przydałby się jeszcze jeden etap do sprawdzenia czy nie występują jakieś inne znaki niż litery i myślnik. jeżeli nie da się tego wykonać jednym zapytaniem to chyba tak to będę musiał zrobić. -------------------- aplikacje internetowe | Symfony
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 5 Dołączył: 29.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
Mam nadzieje, że niczego nie pominąłem:)
-------------------- Kacper Szurek <--- http://www.kacka.pl
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
Mam nadzieje, że niczego nie pominąłem:)
skomplikowane;) dzięki, zaraz sprawdzę. EDIT: sprawdziłem (mam gotową funkcję + przykłady złych i dobrych stringów). niestety Twój regex nie zdał egzaminu. widocznie jakieś kosmetyczne zmiany trzeba wykonać. Ten post edytował AxZx 15.05.2009, 10:28:32 -------------------- aplikacje internetowe | Symfony
|
|
|
![]()
Post
#8
|
|
![]() Developer Grupa: Moderatorzy Postów: 3 045 Pomógł: 290 Dołączył: 20.01.2007 ![]() |
W jednym wyrażeniu regularnym raczej tego nie zrobisz (przynajmniej mi nic do głowy nie przychodzi). Na Twoim miejscu najpierw bym sprawdził czy w tekście występują minimum czy litery:
a następnie policzył bym ilość myślników i zastosował odpowiedniego ifa. |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
W jednym wyrażeniu regularnym raczej tego nie zrobisz (przynajmniej mi nic do głowy nie przychodzi). Na Twoim miejscu najpierw bym sprawdził czy w tekście występują minimum czy litery:
a następnie policzył bym ilość myślników i zastosował odpowiedniego ifa. czyli tak jak myślałem. wczoraj to opisałem, że najlepiej to pewnie jest w 3 etapach zrobić. najpewniej i przejrzyście:) dzięki. -------------------- aplikacje internetowe | Symfony
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 5 Dołączył: 29.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
Jednak pominąłem:
![]()
Działa dla: Kod -kacper k-acper ka-c kacp-er kacper- kac- kac-p k-asd kacper-r Nie działa dla: Kod -ka k-a ka- k-a ka- k- -k Ale IMO pokazuje to tylko dlatego, żeby pokazać że się DA:) -------------------- Kacper Szurek <--- http://www.kacka.pl
|
|
|
![]()
Post
#11
|
|
![]() Developer Grupa: Moderatorzy Postów: 3 045 Pomógł: 290 Dołączył: 20.01.2007 ![]() |
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 5 Dołączył: 29.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
Przynajmniej fajnym kodem w skrypcie można poszpanować;P
-------------------- Kacper Szurek <--- http://www.kacka.pl
|
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
Jednak pominąłem: ![]() Ale IMO pokazuje to tylko dlatego, żeby pokazać że się DA:) masz racje. da się:) trzeba było wszystkie możliwe kombinacje wpisać. ale z moich nieskomplikowanych testów wynika, że zapomniałeś o dwóch kombinacjach. - kolawski kolawski - nie wiem czy to jest poprawna możliwość podania nazwiska. chyba nie. ale ja założyłem, że mają być minimum 3 litery maksimum 1 myślnik. a te dwa stringi spełniają to założenie. tak w ogóle to jest walidacja nazwiska, której problem kiedyś na forum był poruszany ale chyba nie było tak pozytywnych rezultatów:) Ten post edytował AxZx 15.05.2009, 15:09:14 -------------------- aplikacje internetowe | Symfony
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 5 Dołączył: 29.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
- kolawski kolawski - Nie mówiłeś nic o spacjach:) Kod -kolawski kolawski- Testy przechodzi, ze spacjami oczywiście już nie;) -------------------- Kacper Szurek <--- http://www.kacka.pl
|
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
Nie mówiłeś nic o spacjach:) Kod -kolawski kolawski- Testy przechodzi, ze spacjami oczywiście już nie;) masz racje, zapomniałem. przepraszam. ale nie dając możliwości podania spacji można by wpłynąć na podniesienie poziomu irytacji wprowadzającego dane. bo przecież ktoś może zechcieć podać kowlsa-junger a ktoś inny poda kowlsa - junger. w ostatnim etapie można by usuwać jeszcze podwójne spacje, tzn zamieniać je na jedną spację. ja przygotowałem taki test:
-------------------- aplikacje internetowe | Symfony
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 5 Dołączył: 29.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
Możesz wcześniej preg_replace i usuwanie spacji;)
-------------------- Kacper Szurek <--- http://www.kacka.pl
|
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
Możesz wcześniej preg_replace i usuwanie spacji;) całkiem spacji nie mogę usunąć. bo jak już napisałem, ktoś może będzie chciał podać swoje nazwisko tak: kowlsls - ndfndf a jak usunę to później musiałbym zgadywać gdzie dał spacje a gdzie nie dał. ciekawe czy nikt się nie przejmuje poprawnością podanego nazwiska czy po prostu trzeba pisać takie długie regexy zawierające wszystkie możliwe kombinacje. -------------------- aplikacje internetowe | Symfony
|
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 5 Dołączył: 29.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli chodzi o mnie, to przyjął bym że nazwisko jest w formacie nazwisko-nazwisko bez spacji (lub ze spacjami), poprawianie użytkownika to nie koniec świata.
-------------------- Kacper Szurek <--- http://www.kacka.pl
|
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 71 Pomógł: 4 Dołączył: 3.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
minimum 3 litery, maksimum 1 myślnik To oczywiście jest troszkę inne rozwiązanie bo wykorzystujące funkcję, a nie wyrażenie regularne. Nie wiem jak z wydajnościa, która będzie lepsza. Czy wyszukiwanie za pomocą wyr. reg. korzystające z teorii automatów skończonych czy też korzystając z tej funkcji i jednej pętli for (złożoność liniowa). A oto sama funkcja:
W każdym razie do czasu aż ktoś napisze dobrze to wyr. reg. (jeżeli już koniecznie musisz użyć wyr. reg.) możesz skorzystać z tej funkcji. Oczywiście zalecane byłoby żebyś dopisał jeszcze warunek na początku tej funkcji na wypadek, gdyby argument funkcji nie był łańuchem znaków, ale... ![]() Ten post edytował MySQL 16.05.2009, 18:42:30 -------------------- Pozdrawiam serdecznie
Krzysiek |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.06.2025 - 19:05 |