Backo
Backo

Reputation: 18871

Regex to validate string having only characters (not special characters), blank spaces and numbers

I am using Ruby on Rails 3.0.9 and I would like to validate a string that can have only characters (not special characters - case insensitive), blank spaces and numbers.

In my validation code I have:

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

How I should state the regex?

Upvotes: 8

Views: 16794

Answers (3)

Justin Morgan
Justin Morgan

Reputation: 30715

There are a couple ways of doing this. If you only want to allow ASCII word characters (no accented characters like Ê or letters from other alphabets like Ӕ or ל), use this:

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

If you want to allow only numbers and letters from other languages for Ruby 1.8.7, use this:

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

If you want to allow only numbers and letters from other languages for Ruby 1.9.x, use this:

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

Also, if you are planning to use 1.9.x regex with unicode support in Ruby on Rails, add this line at the beginning of your .rb file:

# coding: utf-8

Upvotes: 19

dev
dev

Reputation: 392

In addition to what have been said, assign any of the regular expresion to your regex variable in your control this, for instance

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

Upvotes: 0

Mrchief
Mrchief

Reputation: 76208

You're looking for:

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

The + says one or more so it'll not match empty string. If you need to match them as well, use * in place of +.

Upvotes: 2

Related Questions