2012-05-12 31 views
23

Tôi làm việc với MVC và tôi mới làm quen với nó. Tôi muốn kiểm tra giá trị đầu vào chỉ bằng tiếng Ba Tư (Ký tự) bằng cách [RegularExpression] Xác thực. Vì vậy, tôi nghĩ rằng để sử dụng Regex và cần phải kiểm tra trong phạm vi của unicodes, nhưng tôi không lnow làm thế nào có thể tìm thấy phạm vi của các ký tự tiếng Ba Tư Unicode. Tôi có đúng về Regex này không? gợi ý của bạn là gì và làm thế nào tôi có thể tìm thấy hàng loạt các Unicode trong PersianRegex để kiểm tra chuỗi đầu vào chỉ bằng ngôn ngữ Ba Tư

+0

Tôi không hiểu tại sao bạn cần một regex để kiểm tra xem một nhân vật có nằm trong một phạm vi nhất định hay không. – jahroy

+0

Ký tự! = Ngôn ngữ. Ví dụ: 'hdafhladf' không phải là tiếng Anh. Và tôi chắc chắn có một số nhân vật không được phân loại chính thức là "Ba Tư" nhưng được phép bằng tiếng Ba Tư (có thể là khoảng trắng?) –

Trả lời

14

Kiểm tra chữ cái đầu tiên và phạm vi bức thư cuối cùng trong Persian Tôi nghĩ một cái gì đó như thế này:

"^[آ-ی]$" 
+0

không hoạt động tại php –

+4

không hoạt động với bất kỳ ký tự Ba Tư nào giống như "خ", "پ", ... vì đây không phải là ngôn ngữ tiếng Ả Rập! Tôi nghĩ tốt hơn là sử dụng: [\ u0600- \ u06FF] –

17

nhân vật Ba Tư nằm trong khoảng: [\u0600-\u06FF]

Hãy thử:

Regex.IsMatch(value, @"^[\u0600-\u06FF]+$") 
+4

'[\ u0600- \ u06FF \ uFB8A \ u067E \ u0686 \ u06AF]' là tốt hơn . xem http://stackoverflow.com/a/22565376/896465 – seyed

+0

@downvoter: Bất kỳ lý do gì? – Toto

8

Tôi sử dụng RegExp này trong chương trình của mình và nó hoạt động chính xác. hy vọng sẽ giúp bạn:

[پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤآإأءًٌٍَُِّ\s]+$ 
0

nhân vật Ba Tư nằm trong phạm vi: [\ u0600- \ u06FF] + [\ s]

Hãy thử:

Regex.IsMatch(Text, @"^([\u0600-\u06FF]+\s?)+$") 

patern này chứa thư và không gian Charachters.

13
Regex.IsMatch(Text, @"^([\u0600-\u06FF]+\s?)+$")  

này chỉ chứa ký tự tiếng Ả Rập chuẩn dao động Nhưng Ba Tư cũng bao gồm 4 More Nhân vật:

ژ \uFB8A 
پ \u067E 
چ \u0686 
گ \u06AF 

Vì vậy, bạn nên sử dụng:

^[\u0600-\u06FF\uFB8A\u067E\u0686\u06AF]+$ 

Nếu bạn muốn kết hợp Zero-width- không tham gia, bạn cũng nên thêm phần này:

\u200C 
+2

xem xét chấp nhận không gian và không có chiều rộng không joiner trong các ký tự! https://stackoverflow.com/a/34869397/5160077 –

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