Предотвращение кириллицы / грека / китайца в строке - C# 4.0

У нас есть система (использующая ASP.NET C# 4.0), которая поддерживает греческие, кириллические и китайские символы. Но сторонняя система, похоже, не работает правильно. Чтобы избежать проблем при вводе данных для этой сторонней системы, я хочу ограничить текстовые поля, чтобы они принимали только английские или акцентированные символы, но возвращали ошибку проверки для других символов.

Как я могу сделать это? Кажется, я могу использовать регулярное выражение в соответствии с \p{Latin}, но C#, кажется, не поддерживает это из моего опыта, так как я получаю Unknown property 'Latin' ошибка.

1 ответ

Решение

В.NET свойства блока Unicode должны быть записаны с Is...:

[\p{IsGreek}\p{IsCyrillic}...]

Подобный шаблон может обнаружить все оскорбительные символы в вашем случае. Если вы просто хотите исключить все, кроме Latin Вы могли бы сделать что-то вроде:

[^\p{IsBasicLatin}\p{IsLatin-1Supplement}\p{IsLatinExtended-A}\p{IsLatinExtended-B}]

Это охватывает все кодовые точки до U+024F,

Список поддерживаемых имен блоков см. В разделе MSDN.

Другие вопросы по тегам