1
A
回答
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)字母。
0
将\w
替换为[a-zA-Z0-9]
。快捷键\w
匹配任何单词字符,即字母数字字符和下划线。
@"^[a-zA-Z0-9]+(?: [a-zA-Z0-9]+){0,8}$"
您可以使用[a-z0-9]
一旦你弄清楚如何设置的i
标志(不区分大小写)。