Why doesn't this ruby regex work? -
i have simple regex task has left me confused (and when thought starting hang of them too). want check string consists of 11 digits. regex have used /\d{11}/. understanding give match if there (no more , no less than) 11 numeric characters (but understanding wrong).
here happens in irb:
ruby-1.9.2-p136 :018 > "33333333333" =~ /\d{11}/ => 0 ruby-1.9.2-p136 :019 > "3333333333" =~ /\d{11}/ => nil ruby-1.9.2-p136 :020 > "333333333333" =~ /\d{11}/ => 0 so while appropriate match 11 digit string , appropriate no-match 10 digit string, getting match on 12 digit string! have thought /\d{11,}/ regex this.
can explain misunderstanding?
without anchors, assumption "no more, no less" incorrect.
/\d{5}/ matches
foo12345bar ^ +---here and
s123456yargh13337 ^^ ^ |+---here | +----here | here--+ so, instead use:
/^\d{5}$/
Comments
Post a Comment