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

时间:2015-07-13 15:20:00

标签: ruby regex validation

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

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

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

John Stevens 12

james stevens

willcall12

12cell space

但不是这个

12cell space!

John@Stevens

james 12 Fall#

我试过以下

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

[\w _]+

^[\w_ ]+$

但它们允许特殊字符或不允许空格。这是一个ruby验证。

2 个答案:

答案 0 :(得分:3)

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

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

\s匹配包含制表符的空白字符。如果您需要与空间完全匹配,可以在方括号内使用(空格)。

最后

/i表示匹配不区分大小写。

请查看Rubular以测试您的正则表达式。

编辑:正如Jesus Castello所指出的,对于某些情况,应使用\A\Z代替^和{{1}表示字符串边界。有关说明,请参阅Difference between \A \Z and ^ $ in Ruby regular expressions

答案 1 :(得分:1)

这是一个打印匹配结果的工作示例:

VALIDATION = /\A[a-zA-Z0-9 ]+\Z/

words = ["willcall12", "John Stevens 12", "12cell space!", "John@Stevens"]

words.each do |word|
  m = word.match(VALIDATION)
  puts m[0] if m 
end

如果您想了解有关正则表达式的更多信息,我可以推荐this article