Answers:
只需在角色类中添加一个空格即可。
^[a-zA-Z0-9_ ]*$
以上并不完全正确。由于这*
意味着零或更多,因此它将匹配以下通常不希望匹配的所有以下情况:
最初,我认为这样的细节不值得讨论,因为OP提出了一个基本问题,即严格性似乎不是问题。但是,既然这个问题越来越受欢迎,我想说...
以我的口味(不使用\w
),它可以翻译为:
^[a-zA-Z0-9_]+( [a-zA-Z0-9_]+)*$
(无论如何,请投票@stema。)
关于此答案(和@stema)的一些注意事项:
如果要在单词之间允许多个空格(例如,如果您希望允许意外的双倍空格,或者您正在使用PDF中的粘贴复制的文本),请+
在空格之后添加一个:
^\w+( +\w+)*$
如果要允许制表符和换行符(空格字符),请用代替空格\s+
:
^\w+(\s+\w+)*$
在这里,我建议使用+
默认设置,因为例如Windows换行符由两个空格字符依次组成\r\n
,因此您需要+
同时捕获两个空格字符。
检查您使用的正则表达式的方言。*在像Java语言中,你必须逃脱你的反斜线,即 \\w
和\\s
。在旧的或更基本的语言和工具,像sed
,\w
并\s
没有定义,所以他们写出来与字符类,如 [a-zA-Z0-9_]
和[\f\n\p\r\t]
分别。
*我知道这个问题被加了标签vb.net,但基于25,000多个观看次数,我猜想不仅是那些遇到此问题的人。目前,它是Google在搜索词组(正则表达式空格词)上的首个热门产品。
一种可能性是仅在字符类中添加空格,如acheong87建议的那样,这取决于您对模式的严格程度,因为这还将允许以5个空格开头的字符串或仅包含空格的字符串。
另一种可能性是定义一个模式:
我将\w
在大多数正则表达式中使用它,而不是[a-zA-Z0-9_]
(在某些情况下它是基于Unicode的)
^\w+( \w+)*$
这将允许一系列至少一个单词,并且单词之间用空格分开。
^
匹配字符串的开头
\w+
匹配一系列至少一个单词字符
( \w+)*
是重复0次或多次的组。在小组中,它期望一个空格,然后是一系列至少一个单词字符
$
匹配字符串的结尾
我假设您不想要引导/尾随空间。这意味着您必须将正则表达式分为“第一个字符”,“中间的东西”和“最后一个字符”:
^[a-zA-Z0-9_][a-zA-Z0-9_ ]*[a-zA-Z0-9_]$
或者,如果您使用类似perl的语法:
^\w[\w ]*\w$
另外:如果您故意在正则表达式中措辞说它也允许空字符串,则必须使整个事情成为可选:
^(\w[\w ]*\w)?$
如果只允许单个空格字符,则看起来有些不同:
^((\w+ )*\w+)?$
这匹配0..n个单词,后跟一个空格,再加上一个不带空格的单词。并且使整个事情成为可选项,以允许使用空字符串。
\s
不相等。\s
匹配的不只是空间。
这个正则表达式
^\w+(\s\w+)*$
只会在字词之间留一个空格,而不会在开头或结尾加上空格。
以下是正则表达式的说明:
^
在字符串开头声明位置\w+
匹配任何单词字符 [a-zA-Z0-9_]
+
一次至无限次,尽可能多次,并根据需要返回[贪婪](\s\w+)*
*
在0到无限制的时间之间,尽可能多的次数,并根据需要返回[贪婪]\s
匹配任何空白字符 [\r\n\t\f ]
\w+
匹配任何单词字符 [a-zA-Z0-9_]
+
一次至无限次,尽可能多次,并根据需要返回[贪婪]$
在字符串末尾声明位置开头不允许有空间。但是在单词之间留有空格。还允许单词之间使用特殊字符。一个用于FirstName和LastName字段的正则表达式。
\w+.*$
仔细查看了许多这些假定的答案...
...以及在检查Stack Overflow之后的bupkis以及其他网站上查找的正则表达式,该正则表达式匹配的任何字符串都没有开头或结尾的空格,并且在严格的字母字符之间只有一个空格。
^[a-zA-Z]+[(?<=\d\s]([a-zA-Z]+\s)*[a-zA-Z]+$
因此很容易修改为字母数字:
^[a-zA-Z0-9]+[(?<=\d\s]([a-zA-Z0-9]+\s)*[a-zA-Z0-9]+$
(这与单个单词不匹配,但是^[a-zA-Z0-9]+$
如果您还需要捕获单个单词,则只需使用switch / if-else 即可。)
享受:D
[(?<=\d\s]
匹配一个字符:(
,?
,<
,=
,数字或一个空白字符,而不能是你的意思。如果应该在后面看,应该在(?<=\d\s)
,但是在那儿没有意义;正则表达式永远不会匹配。
尝试。*?留出空格对我有用
.
匹配所有东西。这很可能不是这里的解决方案。