正则表达式验证只包含字符(不是特殊字符),空格和数字的字符串

时间:2011-07-20 16:10:53

标签: ruby-on-rails ruby regex ruby-on-rails-3 validation

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

在我的验证码中,我有:

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

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

3 个答案:

答案 0 :(得分:18)

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

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

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

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

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

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

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

# coding: utf-8

答案 1 :(得分:1)

您正在寻找:

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

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

答案 2 :(得分:0)

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

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