木村です。 On Thu, 19 Jun 2008 13:49:47 +0900 KIMURA Koichi <kimura.koichi / canon.co.jp> wrote: > 1.9 だと否定形の先読みを使って /\A(?!0{7})[0-9]{1,7}+\z/ と書けますが > 1.8ではなんか上手く動かないですね。 > いずれにしろ、二段構えでやるのがわかりやすくていいと思います。 > > sample = %w[0 0123 3456 000000 0000006 0000000 0123456] > > sample.each do |i| > puts "try #{i}" > #puts i if /^(?!0{7})[0-9]{1,7}+$/.match(i) > puts i if /\A[0-9]{1,7}\Z/.match(i) && !/0{7}/.match(i) > end すみません。どういうわけか {}のあとに '+' が入り込んでました。 通常の文のところでもそう書いているから寝ぼけていたのか。 1.8でも /^(?!0{7})[0-9]{1,7}$/ や /\A(?!0{7})[0-9]{1,7}\z/ で行けると思います。 -- 木村浩一