我们有一个支持希腊文、西里尔文、中文字符的系统(使用 ASP.NET C# 4.0)。但是第三方系统似乎无法正常工作。为避免在为此第三方系统输入数据时出现问题,我想将文本字段限制为仅接受英文或重音字符,但返回其他字符的验证错误。
我怎样才能做到这一点?看来我可以使用 \p{Latin} 的正则表达式,但根据我的经验,C# 似乎不支持这一点,因为我遇到了Unknown property 'Latin'
错误。
在 .NET 中,Unicode 块属性需要编写为Is...
:
[\p{IsGreek}\p{IsCyrillic}...]
像这样的模式会检测到您案例中的所有违规字符。如果您只想排除除 之外的所有内容Latin
,则可以执行以下操作:
[^\p{IsBasicLatin}\p{IsLatin-1Supplement}\p{IsLatinExtended-A}\p{IsLatinExtended-B}]
这涵盖了所有代码点,直到U+024F
.
有关受支持的块名称的列表,请参阅 MSDN。