Prev: Net::Telnet - How to send keystrokes like ESC
Next: Do the inplace edit without backup file generated.
From: Robert Klemme on 27 Nov 2009 02:11 On 11/26/2009 09:46 PM, Ralph Shnelvar wrote: >>>> "abc..def" !~ /\.\./ > =>> false > > I don't think that > "abc..def" !~ /\.\./ > is a regular expression. > > /\.\./ > is a regular expression. > > > Basically ... I need something that will work in a Rails validates_format_of > > # Reject if the email address has two periods in a row > validates_format_of :email, > # See http://en.wikipedia.org/wiki/E-mail_address > :with => ????, > :message => 'invalid email format' You could try negative lookahead irb(main):001:0> s=["aaa", "a.", ".a", "a..", "..a"] => ["aaa", "a.", ".a", "a..", "..a"] irb(main):002:0> s.map {|x| [x, /\A(?:.(?!\.\.))*\z/ =~ x]} => [["aaa", 0], ["a.", 0], [".a", 0], ["a..", nil], ["..a", 0]] Or maybe there is an ":without" which uses the negated match? Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/
From: Aldric Giacomoni on 27 Nov 2009 07:10 Ralph Shnelvar wrote: > How does one create an expression that fails if there are two or more > periods > (e.g. "..") in a row? As previously mentioned, you can use this: /\.{2,}/ You can also use this: /[..+]/ Though of course, you -want- to get 'nil' instead of a match. On the other hand, if you are looking to validate an email address, there are already rails plugins that do that (and more) - so why reinvent the wheel? :) -- Posted via http://www.ruby-forum.com/.
From: Robert Klemme on 27 Nov 2009 07:57 2009/11/27 Aldric Giacomoni <aldric(a)trevoke.net>: > Ralph Shnelvar wrote: >> How does one create an expression that fails if there are two or more >> periods >> (e.g. "..") in a row? > > As previously mentioned, you can use this: > /\.{2,}/ That only positively matches strings which contain at least two dots in a row. OP specifically wanted to _not_ have a match for two dots in a row. > You can also use this: > /[..+]/ Did you test that? How should this expression match two dots in a row? You have define a character class with "." and "+" where one dot is redundant. irb(main):001:0> /[..+]/ =~ "+" => 0 irb(main):002:0> /[..+]/ =~ "." => 0 > On the other hand, if you are looking to validate an email address, > there are already rails plugins that do that (and more) - so why > reinvent the wheel? :) If he's reinventing the wheel then that's certainly not a good idea. I just guess that you are talking about a different wheel. :-) Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/
From: Aldric Giacomoni on 27 Nov 2009 08:02 Robert Klemme wrote: >> You can also use this: >> /[..+]/ > > Did you test that? How should this expression match two dots in a > row? You have define a character class with "." and "+" where one dot > is redundant. > > irb(main):001:0> /[..+]/ =~ "+" > => 0 > irb(main):002:0> /[..+]/ =~ "." > => 0 I did test it. Just not well. :( -- Posted via http://www.ruby-forum.com/.
From: Steve Wilhelm on 28 Nov 2009 00:40 Ralph Shnelvar wrote: > Basically ... I need something that will work in a Rails > validates_format_of > > # Reject if the email address has two periods in a row > validates_format_of :email, > # See > http://en.wikipedia.org/wiki/E-mail_address > :with => ????, > :message => 'invalid email format' From http://github.com/alexdunae/validates_email_format_of Regex = Regexp.new('^((' + LocalPartUnquoted + ')|(' + LocalPartQuoted + ')+)@(((\w+\-+[^_])|(\w+\.[^_]))*([a-z0-9-]{1,63})\.[a-z]{2,6}$)', Regexp::EXTENDED | Regexp::IGNORECASE) -- Posted via http://www.ruby-forum.com/.
First
|
Prev
|
Pages: 1 2 Prev: Net::Telnet - How to send keystrokes like ESC Next: Do the inplace edit without backup file generated. |