木村です。

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/
で行けると思います。

-- 
木村浩一