Using Regular Expression in Ruby on Rails — Regexp for Password Validation
October 19, 2006
A regular expression (abbreviated as regexp or regex, with plural forms regexps, regexes, or regexen) is a string that describes or matches a set of strings, according to certain syntax rules. Regular expressions are used by many text editors and utilities to search and manipulate bodies of text based on certain patterns. Many programming languages support regular expressions for string manipulation. Ruby has a strong Regular Expression engine built directly as a class of Ruby Programming language as Regexp
Here we will go through an example which will validate the password string.
Lets say we have to implement the following validations to validate a password…
- Password should contain atleast one integer.
- Password should contain atleast one alphabet(either in downcase or upcase).
- Password can have special characters from 20 to 7E ascii values.
- Password should be minimum of 8 and maximum of 40 cahracters long.
To fulfill above requirements we can have a regular expression like…
/^(?=.*\d)(?=.*([a-z]|[A-Z]))([\x20-\x7E]){8,40}$/
in ruby programming language we can have a number of ways to define this regular expression as…
■ reg = Regexp.new(“^(?=.*\d)(?=.*([a-z]|[A-Z]))([\x20-\x7E]){8,40}$”)
or
■ reg = %r(^(?=.*\d)(?=.*([a-z]|[A-Z]))([\x20-\x7E]){8,40}$)
or simply
■ reg = /^(?=.*\d)(?=.*([a-z]|[A-Z]))([\x20-\x7E]){8,40}$/
Now look what exactly this regex is doing…
(?=.*\d) shows that the string should contain atleast one integer.
(?=.*([a-z]|[A-Z])) shows that the string should contain atleast one alphabet either from downcase or upcase.
([\x20-\x7E]) shows that string can have special characters of ascii values 20 to 7E.
{8,40} shows that string should be minimum of 8 to maximum of 40 cahracters long.
We can simply use this regular expression for manual handling of password in an action as…
def validate_password(password)
reg = /^(?=.*\d)(?=.*([a-z]|[A-Z]))([\x20-\x7E]){8,40}$/
return (reg.match(password))? true : false
end
How to implement this regular expression in a model class in ruby on rails for password validation ?
To implement this regular expression in the model class in the rails way we can do it like…
class MyModel
validates_format_of :password, :with => /^(?=.*\d)(?=.*([a-z]|[A-Z]))([\x20-\x7E]){8,40}$/
end
Entry Filed under: Ruby on Rails, password, regexp, validations. .



![UT 3, 4 & The Milky Way [video] UT 3, 4 & The Milky Way [video]](http://static.flickr.com/2633/4135738280_d16c9dd389_t.jpg)






Rss Feeds
1.
baskar | December 25, 2006 at 4:56 am
hi da h r u?
see
byee
2.
athi | February 16, 2007 at 10:12 am
hai
3.
Antibush | February 16, 2007 at 10:40 am
Bush and the Republicans were not protecting us on 9-11, and we aren’t a lot safer now. We may be more afraid due to george bush, but are we safer? Being fearful does not necessarily make one safer. Fear can cause people to hide and cower. What do you think? Why has bush turned our country from a country of hope and prosperity to a country of belligerence and fear.
What happened to us, people? When did we become such lemmings?
The more people that the government puts in jails, the safer we are told to think we are. The real terrorists are wherever they are, but they aren’t living in a country with bars on the windows. We are.
4.
giulivo | April 12, 2007 at 11:09 am
thank you so much from my colleague and me … we’ve used \w instead of the ascii codes because we want only alpha chars, but it works!