只有空格、字母和数字的正则表达式没有特殊字符

Sup*_*meA 0 ruby regex validation

我正在尝试制作一个仅验证字母、数字和空格的正则表达式。我不希望接受任何特殊字符(即 # )(*&^%$@!,)

我一直在尝试几件事,但没有给我字母(大写和小写)、数字和空格。

所以它应该接受这样的东西......

John Stevens 12

james stevens

willcall12
Run Code Online (Sandbox Code Playgroud)

或者

12cell space
Run Code Online (Sandbox Code Playgroud)

但不是这个

12cell space!

John@Stevens

james 12 Fall#
Run Code Online (Sandbox Code Playgroud)

我已经尝试了以下

^[a-zA-Z0-9]+$

[\w _]+

^[\w_ ]+$
Run Code Online (Sandbox Code Playgroud)

但它们允许特殊字符或不允许空格。这是用于 ruby​​ 验证。

Nic*_*lov 7

你几乎猜对了。你可以用这个:

/\A[a-z0-9\s]+\Z/i

\s匹配包括制表符在内的空白字符。如果需要精确匹配空格,可以在方括号内使用(space)。

/i 最后意味着匹配不区分大小写。

看看Rubular来测试你的正则表达式。

编辑:正如Jesus Castello所指出的,对于某些场景,应该使用\Aand\Z代替^and$来表示字符串边界。有关说明,请参阅Ruby 正则表达式中 \A \Z 和 ^ $ 之间的区别