2011-06-06 26 views
6

Tôi cần biểu thức chính quy chỉ chấp nhận ký tự và dấu cách tiếng Hy Lạp cho trường tên trong biểu mẫu của tôi (PHP). Tôi đã thử một số phát hiện trên mạng nhưng không có may mắn. Bất kỳ trợ giúp sẽ được đánh giá cao.PHP và regexp chỉ chấp nhận các ký tự Hy Lạp theo mẫu

+2

Bất cứ khi nào ai đó cố gắng giới hạn phạm vi nhập liệu như vậy, tôi tự hỏi: Có thực sự là một ý tưởng hay không? Bạn cũng có thể có trường hợp sử dụng hợp lệ, nhưng thường là quá mức cần thiết - hãy tưởng tượng một người có tên không phải Hy ​​Lạp sống ở Hy Lạp hoặc người nước ngoài đang cố nhập địa chỉ tạm thời ở nơi khác trên thế giới, v.v. –

+0

Dù bằng cách nào, bạn nên thêm thông tin: Bộ ký tự nào là dữ liệu mà bạn đang so sánh? UTF-8? –

+1

Bạn đã thử những phát hiện nào? (Khác bạn có thể nhận được cùng một gợi ý tương tự.) – mario

Trả lời

4

Tôi không quá hiện hành về bảng chữ cái Hy Lạp, nhưng nếu bạn muốn làm điều này với bảng chữ cái La Mã, bạn sẽ làm điều này:

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

Vì vậy, để làm điều này với Hy Lạp, bạn thay thế az với các chữ cái đầu tiên và cuối cùng của bảng chữ cái Hy Lạp. Nếu tôi nhớ chính xác đoạn Kinh Thánh của tôi, đó là những đoạn αω. Vì vậy, các mã sẽ là:

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

gee, điều đó chưa bao giờ xảy ra ... cảm ơn bạn đời. – bikey77

+0

Và khi chữ cái Hy Lạp có các công cụ sửa đổi có ký hiệu ở trên chúng? – blackuprise

+0

@blackuprise - Đó sẽ là một câu hỏi hoàn toàn khác. Đó là nontrivial để đối phó với dấu phụ. –

0

Hy Lạp & Coptic ở utf-8 dường như là trong U + 0370 - phạm vi U + 03FF. Hãy lưu ý: một không gian, một -, một . v.v. không phải là ....

-1

Bảng chữ cái Hy Lạp hiện đại trong UTF-8 nằm trong số U+0386 - U+03CE range.

Vì vậy, các regex bạn cần phải chấp nhận các ký tự Hy Lạp là:

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

hoặc (với không gian)

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

Dường như đây gần như là một bản sao/dán của câu trả lời trước đó (6+ tháng trước) ... Nếu có một số cải tiến đáng kể cho câu trả lời trước đó, tốt nhất nên phác thảo/giải thích điều đó. Cảm ơn. – BigBlueHat

15

giải pháp chữ đầy đủ, với các chữ cái có dấu:

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

Tôi sẽ đề nghị những điều sau đây, ngoài câu trả lời của bạn: '/^[A-Za-zΑ-Ωα-ωίϊΐόάέύϋΰήώ] + $ /'. Lưu ý rằng tôi đã thay đổi phạm vi thứ hai từ 'A-z' thành' a-z'. –

+0

Điều này không bắt các chữ cái Hy Lạp khác. Xem khối Unicode mở rộng tiếng Hy Lạp. – Suragch

0

Các câu trả lời khác ở đây không hiệu quả với tôi. ký tự Hy Lạp Unicode có trong hai khối sau

  • Hy Lạp và Coptic U + 0370 đến U + 03FF (chữ cái Hy Lạp bình thường)
  • Hy Lạp mở rộng U + 1F00 đến U + 1FFF (chữ cái Hy Lạp với dấu)

các trận đấu regex toàn bộ từ tiếng Hy Lạp sau:

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

tôi sẽ cho người đọc dịch đó để bất cứ định dạng ngôn ngữ lập trình họ có thể được sử dụng.

Các vấn đề liên quan