Regex 只允许空字符串、字母、数字或空格的正则表达式?

Regex 只允许空字符串、字母、数字或空格的正则表达式?,regex,Regex,需要帮助想出一个只允许数字、字母、空字符串或空格的正则表达式 ^[_A-z0-9]*((-|\s)*[_A-z0-9])*$ 这是我发现的最接近的一个,但它允许下划线和连字符 只有字母、数字、空格或空字符串? 那么一个字符类就可以了 ^[A-Za-z0-9 ]*$ A-z范围包含的不仅仅是字母。 你可以在表格中看到 空白的\s也包括制表符或换行符(取决于标志)。 但如果你也想要这些,那就用它代替空间 ^[A-Za-z0-9\s]*$ 此外,根据您的语言/工具使用的正则表达式引擎/方言,您可

需要帮助想出一个只允许数字、字母、空字符串或空格的正则表达式

^[_A-z0-9]*((-|\s)*[_A-z0-9])*$

这是我发现的最接近的一个,但它允许下划线和连字符

只有字母、数字、空格或空字符串?
那么一个字符类就可以了

^[A-Za-z0-9 ]*$
A-z
范围包含的不仅仅是字母。
你可以在表格中看到

空白的
\s
也包括制表符或换行符(取决于标志)。
但如果你也想要这些,那就用它代替空间

^[A-Za-z0-9\s]*$
此外,根据您的语言/工具使用的正则表达式引擎/方言,您可以对任何unicode字母使用
\p{L}

因为
[A-Za-z]
只包括普通的ascii字母。

参考

您的正则表达式太复杂,无法满足您的需要。 第一部分很好,您允许字母和数字,您可以简单地添加空格字符

然后,如果您使用
*
字符,将其转换为0或任何字符,则可以解决空字符串问题

看这里

/^[a-z0-9 ]*$/gmi
请注意,我没有像您那样使用
A-z
,因为这将转换为ascii(101)中
A
z
(172)之间的任何字符。这意味着它还将匹配字符(133到141,既不是数字也不是字母)。相反,我使用了允许小写字母的
a-z
,并使用了标志
I
,它告诉正则表达式不要处理大小写

下面是正则表达式的直观解释


您还可以在

中测试更多大小写,仅匹配某些字符等同于不匹配任何其他字符,因此您可以使用regex
r=/[^a-z\d]/i
来确定字符串是否包含允许的字符以外的任何字符。在Ruby中,它将实现如下

"aBc d01e e$9" !~ r #=> false
"aBc d01e ex9" !~ r #=> true

在这种情况下,在这种方法和尝试匹配
/\A[A-z\d]+\z/i
之间可能没有太多选择,但在其他情况下,使用负匹配可以大大简化正则表达式。

如果它做了您想做的一切,您能删除下划线吗^[A-z0-9]*(((-124;\ s)*[A-z0-9])*$我试过了,但我不确定语法应该是什么样子-你知道吗?语法应该完全相同,除非你去掉
。连字符是因为
(-124;\ s)*
。如果你不想使用连字符,为什么要用它呢?我不明白你当初怎么会写这个regexp。如果你不想要这些角色,为什么要把它们放进去?你是不是只是从某个地方复制了它,却不了解它是如何工作的?
"aBc d01e e$9" !~ r #=> false
"aBc d01e ex9" !~ r #=> true