^[a-zA-Z0-9_]*$
例如,当使用此正则表达式时,“HelloWorld”是匹配的,但“Hello World”不匹配。
我该如何调整它以允许空格?
^[a-zA-Z0-9_]*$
例如,当使用此正则表达式时,“HelloWorld”是匹配的,但“Hello World”不匹配。
我该如何调整它以允许空格?
只需在您的字符类中添加一个空格即可。
^[a-zA-Z0-9_ ]*$
上面的内容并不完全正确。由于*
意味着零个或多个,它将匹配所有以下情况,这些情况通常不是我们想要匹配的:
最初,我认为这样的细节并不值得深入探讨,因为OP问了一个如此基础的问题,以至于严格性似乎不是一个问题。然而,现在这个问题已经变得比较流行了,我想说...
在我的风格中(不使用\w
),它的翻译是:
^[a-zA-Z0-9_]+( [a-zA-Z0-9_]+)*$
If you want to allow multiple spaces between words (say, if you'd like to allow accidental double-spaces, or if you're working with copy-pasted text from a PDF), then add a +
after the space:
^\w+( +\w+)*$
If you want to allow tabs and newlines (whitespace characters), then replace the space with a \s+
:
^\w+(\s+\w+)*$
Here I suggest the +
by default because, for example, Windows linebreaks consist of two whitespace characters in sequence, \r\n
, so you'll need the +
to catch both.
检查您正在使用哪种正则表达式方言。* 在像Java这样的语言中,您需要转义反斜杠,即 \\w
和 \\s
。 在旧版或更基本的语言和实用程序中,例如sed
,未定义\w
和\s
,因此请使用字符类编写它们,例如 [a-zA-Z0-9_]
和[\f\n\p\r\t]
。
* 我知道这个问题被标记为vb.net,但根据25000多次浏览,我猜想不仅仅是那些人遇到了这个问题。目前它是谷歌搜索短语“正则表达式空格单词”的第一个结果。
一种可能是简单地将空格添加到字符类中,如acheong87建议的那样。这取决于您对模式的严格程度,因为这也会允许以5个空格开头的字符串或仅由空格组成的字符串。
另一种可能性是定义一个模式:
我将使用\w
,在大多数正则表达式中它与[a-zA-Z0-9_]
相同(在某些正则表达式中它基于Unicode)。
^\w+( \w+)*$
这将允许至少一个单词系列,并且这些单词由空格分隔。
^
匹配字符串的开头
\w+
匹配至少一个单词字符的系列
( \w+)*
是一个被重复0次或更多次的组。在该组中,它期望一个空格,后跟至少一个单词字符的系列
$
匹配字符串的结尾
^- (\w+( \w+)*)$
这个表达式有效。 - NoseKnowsAll这一个对我起了作用
([\w ]+)
尝试使用:
^(\w+ ?)*$
说明:
\w - alias for [a-zA-Z_0-9]
"whitespace"? - allow whitespace after word, set is as optional
ggggggggggggggggggggggggggggggggggggg;
,由于过度回溯,您的正则表达式将需要很长时间才能达到结果。 - nhahtdh我假设您不想要前导/尾随空格。这意味着您必须将正则表达式拆分为“第一个字符”,“中间的内容”和“最后一个字符”:
^[a-zA-Z0-9_][a-zA-Z0-9_ ]*[a-zA-Z0-9_]$
或者,如果您使用类似于Perl的语法:
^\w[\w ]*\w$
^(\w[\w ]*\w)?$
如果你只想允许单个空格字符,代码会有所不同:
^((\w+ )*\w+)?$
\s
不是等价的。\s
匹配的不仅仅是空格。 - nhahtdh^\w$|^\w[\w ]*\w$
。 - Sly_cardinal^\w+(\s\w+)*$
只允许单词之间有一个空格,不允许有前导或尾随空格。
下面是正则表达式的解释:
^
断言字符串开始位置\w+
匹配任何单词字符 [a-zA-Z0-9_]
+
一次或多次,尽可能多匹配,必要时回溯 [贪婪模式](\s\w+)*
*
零次或多次,尽可能多匹配,必要时回溯 [贪婪模式]\s
匹配任何空白字符 [\r\n\t\f ]
\w+
匹配任何单词字符 [a-zA-Z0-9_]
+
一次或多次,尽可能多匹配,必要时回溯 [贪婪模式]$
断言字符串结束位置这个正则表达式只允许字母和空格:
^[a-zA-Z ]*$
该正则表达式不允许在开头使用空格,但可以在单词之间使用空格。此外,它还允许单词之间的特殊字符。这是用于名字和姓氏字段的良好正则表达式。
\w+.*$
仅适用于字母:
^([a-zA-Z])+(\s)+[a-zA-Z]+$
对于字母数字值和_
:
^(\w)+(\s)+\w+$