1

我正在使用 ASP.Net RegularExpressionValidator 进行验证。

纯文本

^(a-z|A-Z|0-9)*[^#$%^&*()\']*$ 

仅限字母数字

^[a-zA-Z0-9]*$ 

仅限数字

^[0-9]*$ 

我需要使用这些表达式来处理多语言(日语、中文等)。

4

1 回答 1

2

使用Unicode 属性

例如:

\p{L}任何语言的任何类型的信件

\d一个数字,在 .net 中,这些字符速记类是基于 Unicode 的。

\p{Nd}除表意文字外的任何文字中的数字 0 到 9

\p{N}任何脚本中的任何类型的数字字符。例如允许像“VII”这样的罗马数字

关于您的第一个表达式:范围(a-z部分)只能在字符类内部使用。所以该部分在(a-z|A-Z|0-9)字面上匹配“az”、“AZ”或“0-9”。

您可以将您的第一个表达式更改为

^[\p{L}\d]*[^#$%^&*()\']*$

你的第二个可能是

^[\p{L}\d]*$

或者

^[\p{L}\p{Nd}]*$

和最后一个

^\d*$

或者

^\p{Nd}*$
于 2012-08-16T08:55:27.597 回答