Regex для проверки входной строки только на персидском языке

Я работаю с MVC, и я новичок в этом. Я хочу проверить входные значения только на персидском языке (символы) с помощью [RegularExpression] Validation. Поэтому я думаю использовать Regex и нужно проверять диапазон юникодов, но я не знаю, как можно найти диапазон персидских символов Unicode. Правильно ли я это Regex? каково ваше предложение и как я могу найти диапазон Unicode на персидском языке?

Персидские символы находятся в пределах диапазона: [\u0600-\u06FF]

Пытаться:

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

Проверьте первое письмо и последний диапазон букв на персидском языке. Я думаю, что-то вроде этого:

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

Это единственное Содержит стандартные арабские символы. Но персидский также включает в себя еще 4 персонажа:

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

Поэтому вы должны использовать:

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

Если вы хотите совпадать с Zero-width-non-joiner, вы должны добавить это тоже:

 \u200C 

Я использую этот RegExp в своей программе, и он работает правильно. надеюсь помочь вам:

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

TL; DR

Все ответы, которые используют \u0600-\u06FF или [آ-ی] , просто НЕПРАВИЛЬНЫ.

т.е. \u0600-\u06FF содержит 209 символов, чем вам нужно! и он также включает числа!

Farsi ДОЛЖЕН использовать наборы символов:

  • Используйте ^[آابپتثجچحخدذرزژسشصضطظعغفقکگلمنوهی]+$ для писем.

  • Для чисел используйте ^[۰۱۲۳۴۵۶۷۸۹]+$ .

  • Используйте [ ‬ٌ ‬ًّ ‬َ ‬ِ ‬ُ ‬ْ ‬] для гласных.

Или союз тех. Возможно, вы захотите добавить другие арабские буквы, такие как Hamza ء к вашему набору символов дополнительно.


Этот ответ существует, чтобы исправить распространенное заблуждение. Codepoints с 0600 по 06FF не обозначают алфавит персидского / фарси (также [آ-ی] ):

 [\u0600-\u0605 ؐ-ؚ\u061Cـ ۖ-\u06DD ۟-ۤ ۧ ۨ ۪-ۭ ً-ٕ ٟ ٖ-ٞ ٰ ، ؍ ٫ ٬ ؛ ؞ ؟ ۔ ٭ ٪ ؉ ؊ ؈ ؎ ؏ ۞ ۩ ؆ ؇ ؋ ٠۰ ١۱ ٢۲ ٣۳ ٤۴ ٥۵ ٦۶ ٧۷ ٨۸ ٩۹ ءٴ۽ آ أ ٲ ٱ ؤ إ ٳ ئ ا ٵ ٮ ب ٻ پ ڀ ة-ث ٹ ٺ ټ ٽ ٿ ج ڃ ڄ چ ڿ ڇ ح خ ځ ڂ څ د ذ ڈ-ڐ ۮ ر ز ڑ-ڙ ۯ س ش ښ-ڜ ۺ ص ض ڝ ڞ ۻ ط ظ ڟ ع غ ڠ ۼ ف ڡ-ڦ ٯ ق ڧ ڨ ك ک-ڴ ػ ؼ ل ڵ-ڸ م۾ ن ں-ڽ ڹ ه ھ ہ-ۃ ۿ ەۀ وۥ ٶ ۄ-ۇ ٷ ۈ-ۋ ۏ ى يۦ ٸ ی-ێ ې ۑ ؽ-ؿ ؠ ے ۓ \u061D] 

В этом диапазоне падают 255 символов, у алфавита Фарси есть 32 буквы, в дополнение к показаниям фарси цифр должно быть 42. Если мы добавим гласные (арабские гласные первоначально, которые редко используются на фарси) и Tanvin ( ٍِ ‬ ٌ ‬ и Tashdid ( ّ ‬ которые являются подмножеством арабской диакритики, а не фарси, мы закончили бы с 46 символами. Это означает:

\u0600-\u06FF содержит 209 символов, чем вам нужно!

۷ с 06F7 является фарси-представлением числа 7 и ٧ с 06F7 номером 0667 является арабским представлением того же числа. ۶ – представление фарси числа 6 и ٦ – арабское представление того же числа. И все они находятся в коде с 0600 по 06FF .

Формы персидских цифр четыре ( ۴ ), пять ( ۵ ) и шесть ( ۶ ) отличаются от форм, используемых на арабском языке, а другие числа имеют разные кодовые точки.

Вы можете видеть различное количество других символов, которые не существуют в фарси / персидском тоже, и никто не хочет их иметь, проверяя имя или фамилию.

[آ-ی] содержит также 117 символов, что намного больше, чем то, что нужно для проверки. Вы можете увидеть их все с помощью Unicode CLDR .

Персидские символы находятся в пределах диапазона: [\ u0600- \ u06FF] + [\ s]

Пытаться:

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

Этот Паттерн содержит письма и космические Чарачеры.