Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyrażenie regularne, pytam bo jestem w nich cienki
Aztech
post
Post #1





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

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


Potrzebuję sprawdzić czy użytkownik wprowadził prawidłowe imię i nazwisko tzn
1) musi być CO NAJMNIEJ 2 członowe
2) pierwsze imie MUSI zaczynac się z dużej litery, nazwisko niekoniecznie
3) w nazwisku dozwolone są myślniki, np. Boy-Żeleński
4) nazwiska mogą być 2 członowe, imion może być więcej

dla przykładu, coś takiego jest poprawne:
Anna Magdalena mcPherson-Stefańska

Stworzyłem takie wyrażenie regularne i wydaje mi się, że powinno być ok. Ale czy jest?
  1. <?php
  2. ereg("^[A-z](a-zA-Z/-)* ( A-Za-z/-)*")
  3. ?>

Jeśli coś pokićkałem to mnie poprawcie.

Ten post edytował Aztech 23.11.2005, 22:01:59
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
Kshyhoo
post
Post #2





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Znam babsztyla z nazwiskiem Kowacka Bo-Jin (zmiksowała się z jakimś żółtym), więc będzie miała kłopot z Twoim formularzem smile.gif


--------------------
Go to the top of the page
+Quote Post
Aztech
post
Post #3





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

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


Właśnie takie miksy też mają chodzić, czyżbym trzeba było to poprawić na takie coś usupełniając o spację
  1. <?php
  2. ereg("^[A-z](a-zA-Z/-)* (( A-Za-z/-)* )*")
  3. ?>

?
Go to the top of the page
+Quote Post
Radarek
post
Post #4





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

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


Jesli piszesz regexa, wpierw postaraj sie wydzielic w nim pewne elementy.

Widze u ciebie imie i nazwisko. Napiszmy wiec wedle twoich kryteriow regexa sprawdzajace imie.

/[A-Z][a-zA-Z]*/

Tu chyba nie ma co tlumaczyc? 1 litera duza, kolejne male lub duzo w dowolnej ilosci (takze 0).

Teraz nazwisko.

/[a-zA-Z]+(\\*s-\\s*[a-zA-Z]+)?/

Pierwszy czlon to ciag malych lub duzych liter i opcjonalny czlon z 2 nazwiskiem po pauzie (\\s* zjadaja dowolna ilosc bialych znakow po obu stronach - oraz pomiedzy imieniem a nazwiskiem).

W sumie wychodzi regex:
  1. <?php
  2.  
  3. if (preg_match("/[A-Z][a-zA-Z]*s*[a-zA-Z]+(*s-s*[a-zA-Z]+)?/", $tekst)) {
  4.  echo "jest ok";
  5. }
  6.  
  7. ?>


Aaa wlasnie doczytalem ze imion moze byc wiecej.

  1. <?php
  2.  
  3. if (preg_match("/([A-Z][a-zA-Z]*s*)+[a-zA-Z]+(*s-s*[a-zA-Z]+)?/", $tekst)) {
  4.  echo "jest ok";
  5. }
  6.  
  7. ?>


EDIT:
do kazdego z tych wyrazen trzeba dodac na poczatku ^ a na koncu $, bo sprawdzamy czy caly tekst pasuje do wyrazenia a nie jego czesc.

Ten post edytował Radarek 9.12.2005, 00:33:20
Go to the top of the page
+Quote Post
marcman
post
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 9.12.2005

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


Mała podpowiedź: w nazwisku mogą się znaleźć znaki '

"O'Reilly" to podręcznikowy przykład.
Go to the top of the page
+Quote Post
Radarek
post
Post #6





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

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


Cytat(marcman @ 2005-12-09 10:48:48)
Mała podpowiedź: w nazwisku mogą się znaleźć znaki '

"O'Reilly" to podręcznikowy przykład.

No ok. Ja napisalem takie wyrazenie jakie chcial autor. Jesli uzna ze nazwisko to zbior takich a nie innych znakow to sobie zmieni odpowiednio wyrazenie.
Go to the top of the page
+Quote Post
Aztech
post
Post #7





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

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


Co dziwne... działa smile.gif)) a tak w ogóle to wielkie dzięki. Szacun
Go to the top of the page
+Quote Post
Spirit86
post
Post #8





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

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


Przydała by się też możliwość używania polskich znaków, tj. ó, ą, ź itd.


--------------------
Audio: Metallica, Soil, RHCP, OffSpring, Green Day, "Retro", Gorillaz, Disturbed, Coma
DB: MySQL 4.1 | php: 4.4.3 Pomogłem Ci? Wciśnij przycisk POMÓGŁ.
Go to the top of the page
+Quote Post
Aztech
post
Post #9





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

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


To nie problem, wystarczy je dopisać zaraz za wyrażeniami [a-z][A-Z] a tutaj tylko by zaciemniały ideę smile.gif
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 Aktualny czas: 19.08.2025 - 15:38