Следующие фрагменты печатаются False:
False
Console.WriteLine(Regex.IsMatch("abc", @"[[:alpha:]]"));
Но это печатает True:
True
Console.WriteLine(Regex.IsMatch("abc", @"[a-zA-Z]"));
Почему? Разве они не должны быть эквивалентными?
.NET регулярные выражения не поддерживают классы символов Posix. Однако они поддерживают группы Unicode.
Это будет работать:
Regex.IsMatch("abc", @"^\p{L}+$");
Группа \p{L} соответствует всем буквам Unicode.
\p{L}
Смотрите здесь для получения дополнительной информации:
http://msdn.microsoft.com/en-us/library/20bw873z.aspx#CategoryOrBlock