以下代码段打印False
:
Console.WriteLine(Regex.IsMatch("abc", @"[[:alpha:]]"));
但这会打印True
:
Console.WriteLine(Regex.IsMatch("abc", @"[a-zA-Z]"));
为什么呢?它们不应该是等价的吗?
答案 0 :(得分:9)
.NET Regexes不支持Posix字符类。但它们确实支持Unicode组。
这样可行:
Regex.IsMatch("abc", @"^\p{L}+$");
\p{L}
组匹配所有Unicode字母。
有关详细信息,请参阅此处:
http://msdn.microsoft.com/en-us/library/20bw873z.aspx#CategoryOrBlock