У меня есть очень простая задача регулярных выражений, которая привела меня в замешательство (и как раз тогда, когда я подумал, что я тоже начинаю понимать их).Я просто хочу проверить, что строка состоит из 11 цифр.Регулярное выражение, которое я использовал для этого, /\d{11}/
.Насколько я понимаю, это даст совпадение, если будет точно (не больше и не меньше) 11 числовых символов (но, очевидно, мое понимание неверно).
Вот что происходит в 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
Таким образом, хотя я получаю соответствующее совпадение для строки из 11 цифр и соответствующее несоответствие для строки из 10 цифр, я получаю совпадение для строки из 12 цифр!Я бы подумал, что /\d{11,}/
будет регулярным выражением для этого.
Кто-нибудь может объяснить мое недоразумение?