2013-08-15 5 views
3

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

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

ответ

3

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

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

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

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

Это охватывает весь код указывает до U+024F.

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

+0

Ах да, я искал список раньше, но не смог его найти. Я попробовал IsLatin, но я вижу, что этого нет в списке, вам нужно быть более конкретным. Отлично. –