#c_sharp #регулярные_выражения
This question already has answers here: Как описать все символы некоторого языка в регулярном выражении? Есть ли готовые решения? (3 ответа) Закрыт 4 года назад. Есть следующее регулярное выражение: Regex regex = new Regex("^[А-Яа-я]+$"); Он работает правильно, но не "понимает" украинский язык. Т.е. он "скушает" "фывапролдж", а это нет - "іилрилії". Как сделать так, чтобы эта регулярка "понимала" украинский язык?
Ответы
Ответ 1
Вам необходимо дополнить символьный класс символами ёЁЇїІіЄєҐґ: "^[А-Яа-яёЁЇїІіЄєҐґ]+$" Это регулярное выражение для букв украинского языка (информацию я брал из Википедии): [а-щА-ЩЬьЮюЯяЇїІіЄєҐґ] Возможно, надо добавить сюда ' (см. комментарий Влада). По поводу ёЁ: эти буквы в таблице Юникода находятся вне диапазона остальный букв, поэтому её надо указывать отдельно. Диапазон заглавных букв русского языка выглядит как U+0410 - U+042F, диапазон строчных - U+0430 - U+044F. Ё имеет код U+0401, а ё — U+0451. И ещё: в .NET можно указать все кириллические символы с помощью \p{IsCyrillic} (U+0400 - U+04FF) и, для полноты, \p{IsCyrillicSupplement} (U+0500 - 052F), и тогда выражение примет форму @"^[\p{IsCyrillic}\p{IsCyrillicSupplement}]+$" Ну, или @"^['\p{IsCyrillic}\p{IsCyrillicSupplement}]+$".Ответ 2
Я бы рекомендовал такое выражене: Regex regex = new Regex("^[\u0400-\u052F\u2DE0-\u2DFF\uA640-\uA69F']+$"); Это понимает все кириллические буквы в Юникоде, например такие буквы: РусскийЫыЁёЭэЪъ УкраїнськаІіЇїЄє' БеларускаяЎў СрпскиЂђЉљЊњЋћЏџ СлавянскиеБуквыѰѱѬѭѨѩ и так далее. Если только хочешь украинские и русские буквы, вот это подходит: new Regex("^[А-Яа-яЁёЇїІіЄєҐґ']+$");
Комментариев нет:
Отправить комментарий