我正在尝试制作一个只验证字母,数字和空格的正则表达式。我不想接受任何特殊字符(即#)(*& ^%$ @!,)
我一直在尝试几件事,但没有给我字母(大写和小写),数字和空格。
所以它应该接受这样的东西......
John Stevens 12
james stevens
willcall12
或
12cell space
但不是这个
12cell space!
John@Stevens
james 12 Fall#
我试过以下
^[a-zA-Z0-9]+$
[\w _]+
^[\w_ ]+$
但它们允许特殊字符或不允许空格。这是一个ruby验证。
答案 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。