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
Radarek
post
Post #2





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

Posty w temacie


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

 



RSS Aktualny czas: 27.12.2025 - 07:19