在ASP.Net中,正则表达式验证不适用于中国文化

时间:2015-08-05 18:35:37

标签: c# asp.net regex validation

我有一个正则表达式验证器,在ASP.Net更改中禁用了客户端验证。用于此验证器的正则表达式如下所示,它正在验证Product Description多行文本框中的输入。

 Expression="^[\\p .,;'\-(0-9)\(\)\[\]]+$"

此ASP.Net应用程序的文化是web配置中指定的中文。

<globalization uiCulture="zh" culture="zh-CHT" />

以下对同一ASP.Net页面中Product Description文本框的输入始终失败。我试图匹配其中任何一个:中文langauge字符或句号或逗号或分号或单引号或数字或圆形/方括号。

问题:正则表达式中导致此输入文本失败的内容是什么?如何更改它以满足匹配要求?

(1)降低庫存過程 (2)增加了吞吐量(1)降低庫存過程 (2)增加了吞吐量(1)降低庫存過程 (2)增加了吞吐量(1)降低庫存過程 (2)增加了吞吐量

1 个答案:

答案 0 :(得分:3)

在.NET正则表达式中,在服务器端工作的那个,你可以使用Unicode categories

^[\p{L}\p{M}\p{N}\s\p{P}]+$

请参阅demo

因此,字符类匹配:

  • \p{L} - Unicode字母
  • \p{M} - 变音符号
  • \p{N} - 数字
  • \s - 空白
  • \p{P} - 标点符号。

请注意,这些Unicode类别不会在您的Englsh UI文化验证发生的客户端工作。你可以在那里使用你的固定表达式:

^[a-zA-Z .,;'\-0-9()\[\]]+$

请参阅demo