【发布时间】:2013-02-26 07:26:40
【问题描述】:
(@"^\w+(?: \w+){0,8}$"
上述正则表达式限制了除 _ 之外的所有特殊字符。我将如何限制它。
【问题讨论】:
标签: asp.net regex asp.net-mvc
(@"^\w+(?: \w+){0,8}$"
上述正则表达式限制了除 _ 之外的所有特殊字符。我将如何限制它。
【问题讨论】:
标签: asp.net regex asp.net-mvc
使用
@"^[^\W_]+(?: [^\W_]+){0,8}$"
允许\w 匹配的所有内容,_ 除外。
\W 表示“任何与\w 不匹配的字符”,因此通过将其放入否定字符类并将_ 添加到该类,我们实际上是从@ 中减去_ 987654328@.*
换句话说,[^\W_] 的意思是“匹配任何既不是非字母数字字符也不是下划线的字符”。
另一种方法(可能更明确和更容易理解)是使用 Unicode 属性:
@"^[\p{L}\p{N}]+(?: [\p{L}\p{N}]+){0,8}$"
[\p{L}\p{N}] 表示“任何 Unicode 字母或数字”。
\w 速记的匹配程度远高于 [A-Za-z0-9_],尤其是国际(非 ASCII)字母。
【讨论】:
将\w 替换为[a-zA-Z0-9]。快捷方式\w 匹配任何单词字符,即字母数字字符和下划线。
@"^[a-zA-Z0-9]+(?: [a-zA-Z0-9]+){0,8}$"
一旦弄清楚如何设置i 标志(不区分大小写),就可以使用[a-z0-9]。
【讨论】: