我想要一个正则表达式,防止符号,只允许字母和数字。下面的正则表达式工作得很好,但它不允许单词之间有空格。
^[a-zA-Z0-9_]*$
例如,当使用这个正则表达式时,“HelloWorld”是可以的,但“HelloWorld”不匹配。
我如何调整它允许空格?
我想要一个正则表达式,防止符号,只允许字母和数字。下面的正则表达式工作得很好,但它不允许单词之间有空格。
^[a-zA-Z0-9_]*$
例如,当使用这个正则表达式时,“HelloWorld”是可以的,但“HelloWorld”不匹配。
我如何调整它允许空格?
当前回答
试一试:
^(\w+ ?)*$
解释:
\w - alias for [a-zA-Z_0-9]
"whitespace"? - allow whitespace after word, set is as optional
其他回答
一种可能是将空格添加到您的字符类中,就像acheong87建议的那样,这取决于您对模式的严格程度,因为这也将允许字符串以5个空格开头,或者仅由空格组成。
另一种可能是定义一个模式:
我将使用\w,这是在大多数正则表达式口味与[a-zA-Z0-9_]相同(在一些是基于Unicode的)
^\w+( \w+)*$
这将允许至少一个单词的序列,并且单词用空格分隔。
^匹配字符串的开头
\w+匹配至少一个单词字符的序列
(\w+)*是一个重复0次或更多次的组。在组中,它期望一个空格后面跟着至少一个单词字符的系列
$匹配字符串的结尾
试一试:
^(\w+ ?)*$
解释:
\w - alias for [a-zA-Z_0-9]
"whitespace"? - allow whitespace after word, set is as optional
这个正则表达式只允许字母和空格:
^[a-zA-Z ]*$
这个方法对我很管用
([\w ]+)
只需在正则表达式模式的末尾添加一个空格,如下所示:
[a-zA-Z0-9_ ]