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

Bac*_*cko 7 ruby regex validation ruby-on-rails ruby-on-rails-3

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

在我的验证码中,我有:

validates :name,
  :presence   => true,
  :format     => { :with => regex } # Here I should set the 'regex'
Run Code Online (Sandbox Code Playgroud)

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

Jus*_*gan 18

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

/^[a-zA-Z\d\s]*$/
Run Code Online (Sandbox Code Playgroud)

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

/^(?:[^\W_]|\s)*$/u
Run Code Online (Sandbox Code Playgroud)

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

^[\p{Word}\w\s-]*$
Run Code Online (Sandbox Code Playgroud)

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

# coding: utf-8
Run Code Online (Sandbox Code Playgroud)