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

And*_*hns 4 .net c# regex unicode latin

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

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

Mar*_*der 5

在 .NET 中,Unicode 块属性需要编写为Is...

[\p{IsGreek}\p{IsCyrillic}...]
Run Code Online (Sandbox Code Playgroud)

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

[^\p{IsBasicLatin}\p{IsLatin-1Supplement}\p{IsLatinExtended-A}\p{IsLatinExtended-B}]
Run Code Online (Sandbox Code Playgroud)

这涵盖了U+024F.

有关支持的块名称列表,请参阅 MSDN