Very simple regex question

Hi, I have a very simple regex question.

I don't understand why the regex in the example below isn't identifying
that the string is longer than 12 characters long...

line = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

=> "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

if line =~ /[a-zA-Z]{2,12}/
puts "good"
else

?> puts "bad"

end

good
=> nil

Any ideas?

Many thanks in advance!

···

--
Posted via http://www.ruby-forum.com/\.

Your regexp will match anywhere within the string where there is a run
of 2 to 12 characters. If you want to ensure that there is nothing
before or after whatever is matched, you need to use the begin and end
of string anchors as follows when you define your regexp:

/\A[a-zA-Z]{2,12}\z/

-Jeremy

···

On 11/13/2010 01:06 PM, Geometric Patterns wrote:

Hi, I have a very simple regex question.

I don't understand why the regex in the example below isn't identifying
that the string is longer than 12 characters long...

line = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

=> "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

if line =~ /[a-zA-Z]{2,12}/
puts "good"
else

?> puts "bad"

end

good
=> nil

Any ideas?

That succeeds if the string *contains* between 2 and 12 characters,
not if it consists solely of 2-12 characters.

line = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
if line =~ /[a-zA-Z]{2,12}/
  puts "good" # you'll get this
else
  puts "bad"
end

if line =~ /\A[a-zA-Z]{2,12}\Z/
  puts "good"
else
  puts "bad" # you'll get this
end

FWIW,

···

On Sat, Nov 13, 2010 at 11:06 AM, Geometric Patterns <geometric.patterns@gmail.com> wrote:

I don't understand why the regex in the example below isn't identifying
that the string is longer than 12 characters long...

if line =~ /[a-zA-Z]{2,12}/

--
Hassan Schroeder ------------------------ hassan.schroeder@gmail.com
twitter: @hassan