2011-06-06 8 views
6

Potrzebuję wyrażenia regularnego, które akceptuje tylko znaki i spacje greckie dla pola nazwy w mojej formie (PHP). Próbowałem już kilku odkryć w Internecie, ale bez powodzenia. Każda pomoc zostanie doceniona.PHP i wyrażenie regularne, aby akceptować tylko znaki greckie w formularzu

+2

Ilekroć ktoś próbuje tak ograniczyć zakres wejściowy, zadaję sobie pytanie: czy to naprawdę dobry pomysł? Możesz mieć ważny przypadek użycia, ale często jest to przesada - wyobraźmy sobie osobę z nie-grecką nazwą mieszkającą w Grecji lub obcokrajowca próbującego wprowadzić tymczasowy adres w innym miejscu na świecie itp. Itd. –

+0

Tak czy inaczej, powinien dodać więcej informacji: jaki zestaw znaków to dane, które porównujesz? UTF-8? –

+1

Jakie wyniki wypróbowałeś? (Inaczej możesz uzyskać te same sugestie.) – mario

Odpowiedz

4

Nie jestem też obecny na alfabetu greckiego, ale jeśli chcesz to zrobić z alfabetu łacińskiego, by to zrobić:

/^[a-zA-Z\s]*$/ 

Więc to zrobić z greckiego i wymienić az z pierwszą i ostatnią literą alfabetu greckiego. Jeśli dobrze pamiętam moje fragmenty biblijne, są to: α i ω. Więc kod byłoby:

/^[α-ωΑ-Ω\s]*$/ 
+0

gee, to nigdy nie nastąpiło ... dzięki kolego. – bikey77

+0

A kiedy greckie litery mają modyfikatory ze znakiem nad nimi? – blackuprise

+0

@blackkuprise - To byłoby zupełnie inne pytanie. To nie jest w porządku zajmować się znakami diakrytycznymi. –

0

grecki & koptyjski w UTF-8 wydaje się być w U + 0370 - zakres U + 03FF. Uwaga: spacja, -, . itp. Nie są ....

-1

Nowoczesny alfabet grecki w UTF-8 znajduje się w U+0386 - U+03CE range.

Więc regex trzeba przyjmować tylko greckich znaków jest:

$regex_gr = '/^[\x{0386}-\x{03CE}]+$/u'; 

lub (ze spacjami)

$regex_gr_with_spaces = '/^[\x{0386}-\x{03CE}\s]+$/u'; 
+1

Wygląda na to, że jest to prawie kopia/wklej wcześniejszej (6 miesięcy wcześniej) odpowiedzi ... Jeśli jest jakaś znaczna poprawa w stosunku do wcześniejszej odpowiedzi, najlepiej będzie ją opisać/wyjaśnić. Dzięki. – BigBlueHat

15

pełne rozwiązanie literami, z akcentowanych liter:

/^[A-Za-zΑ-Ωα-ωίϊΐόάέύϋΰήώ]+$/ 
+0

Proponuję oprócz odpowiedzi dodać: '/^[A-Za-zΑ-Ωα-ωίϊΐόάέύϋΰήώ] + $ /'. Zauważ, że zmieniłem drugi zakres z "A-z" na "a-z". –

+0

To nie łapie innych akcentów greckiej litery. Zobacz blok Rozszerzony grecki kod Unicode. – Suragch

0

Inne odpowiedzi tutaj nie działały dla mnie. znaków grecki Unicode są zawarte w następujących dwóch bloków

  • greckie i koptyjski U + 0370 do U + 03FF (normalny greckie litery)
  • Grecki rozszerzony U + 1F00 do U + 1FFF (greckich liter ze znakami diakrytycznymi)

Poniższe wyrażenie regularne odpowiada całe greckie słowa:

[\u0370-\u03ff\u1f00-\u1fff]+ 

dam czytelnik tłumaczyć, że do formatu Niezależnie od języka programowania mogą być one używane.

Powiązane problemy