我正在使用 ASP.Net RegularExpressionValidator 进行验证。
纯文本
^(a-z|A-Z|0-9)*[^#$%^&*()\']*$
仅限字母数字
^[a-zA-Z0-9]*$
仅限数字
^[0-9]*$
我需要使用这些表达式来处理多语言(日语、中文等)。
使用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}*$