On Sun, Jan 14, 2007 at 01:09:49PM +0900, Rob Sanheim wrote: > On 1/13/07, James Edward Gray II <james / grayproductions.net> wrote: > >On Jan 13, 2007, at 9:43 PM, Rob Sanheim wrote: > > > >> I figure that I must be missing something really obvious with this > >> question. But here goes: > >> > >> I want to know if a string matches a regular expression. I don't care > >> where the match begins, I don't want a matchdata object, I don't want > >> to check for nil, I just want a boolean indicating if a string matches > >> a regexp. And I want this to be one method call. From what I can > >> tell, this is the closest I can get: > >> > >> ("string" =~ reg) >= 0 # ugly > > > >Just drop the noise: > > > >"string" =~ reg # => int results are +true+ and nil is +false+ > > > >Hope that helps. > > > > True...but here is a cleaned up version of the place where I tried to do > that: > > def valid_query? > # query is a string accessor > if query_is_plain_text? > is_valid = valid_query_length? && (query =~ regex) > else > is_valid = query_is_url? > end > is_valid > end > > So of course, when it was both a valid query and had a valid length, > it would return zero because it matched the start of the regexp. The > caller of the method wanted true or false only, not zero. The caller is poorly written then :) To work around this: !!is_valid # !! is like the to boolean operator ;) end