正则表达式validation只包含字符(非特殊字符),空格和数字的字符串

我正在使用Ruby on Rails 3.0.9,我想validation一个只能包含字符(不是特殊字符 – 不区分大小写),空格和数字的字符串。

在我的validation码中,我有:

validates :name, :presence => true, :format => { :with => regex } # Here I should set the 'regex' 

我该如何陈述正则表达式?

有几种方法可以做到这一点。 如果您只想允许ASCII字符(没有像Ê这样的重音字符或其他字母表中的字母,如Ӕ或ל),请使用:

 /^[a-zA-Z\d\s]*$/ 

如果您只想为Ruby 1.8.7允许其他语言的数字和字母,请使用:

 /^(?:[^\W_]|\s)*$/u 

如果你只想允许Ruby 1.9.x的其他语言的数字和字母,请使用:

 ^[\p{Word}\w\s-]*$ 

此外,如果您计划在Ruby on Rails中使用带有unicode支持的1.9.x正则表达式,请在.rb文件的开头添加以下行:

 # coding: utf-8 

您正在寻找:

[a-zA-Z0-9\s]+

+表示一个或多个,所以它不匹配空字符串。 如果您还需要匹配它们,请使用*代替+

除了已经说过的内容之外,例如,将任何常规表达式分配给控件中的正则表达式变量

 regex = ^[a-zA-Z\d\s]*$