在字符串中防止西里尔文/希腊文/中文 - C#4.0

时间:2013-08-15 12:32:26

标签: c# .net regex unicode latin

我们有一个支持希腊语,西里尔语,汉字的系统(使用ASP.NET C#4.0)。但第三方系统似乎无法正常工作。为避免在输入此第三方系统的数据时出现问题,我希望将文本字段限制为仅接受英文或带重音符的字符,但会为其他字符返回验证错误。

我怎样才能做到这一点?我似乎可以使用\ p {Latin}的正则表达式,但是根据我的经验,C#似乎不支持这一点,因为我收到Unknown property 'Latin'错误。

1 个答案:

答案 0 :(得分:3)

在.NET中,需要使用Is...

编写Unicode块属性
[\p{IsGreek}\p{IsCyrillic}...]

这样的模式会检测您案例中的所有违规字符。如果您只想排除除Latin之外的所有内容,则可以执行以下操作:

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

这涵盖了最多U+024F的所有代码点。

有关支持的块名称列表see MSDN