4

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

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

4

1 回答 1

5

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

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

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

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

这涵盖了所有代码点,直到U+024F.

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

于 2013-08-15T12:42:52.560 回答