(@"^\w+(?: \w+){0,8}$"
上述正则表达式限制除_之外的所有特殊字符。我将如何限制它。
答案 0 :(得分:2)
使用
@"^[^\W_]+(?: [^\W_]+){0,8}$"
允许\w
匹配除_
以外的所有内容。
\W
表示“任何与\w
不匹配的字符”,因此通过将其放入否定字符类并向该类添加_
,我们就能有效从_
。*
\w
换句话说,[^\W_]
表示“匹配任何既不是非字母数字字符也不是下划线的字符”。
另一种方式(可能更明确,更容易理解)是使用Unicode属性:
@"^[\p{L}\p{N}]+(?: [\p{L}\p{N}]+){0,8}$"
其中[\p{L}\p{N}]
表示“任何Unicode字母或数字”。
<小时/> *在.NET中,
\w
速记比[A-Za-z0-9_]
更多,特别是国际(非ASCII)字母。
答案 1 :(得分:0)
将\w
替换为[a-zA-Z0-9]
。快捷方式\w
匹配任何单词字符,即字母数字字符和下划线。
@"^[a-zA-Z0-9]+(?: [a-zA-Z0-9]+){0,8}$"
一旦弄清楚如何设置[a-z0-9]
标志(不区分大小写),就可以使用i
。