Here is a version of the regex that works around that: regex = /^([a-z])(?!\1)([a-z])(?!\1|\2)([a-z])(?!\1|\2|\3)([a-z])(?!\1|\2|\3|\4)([a-z])(?!\1|\2|\3|\4|\5)([a-z])$/ Some examples: >> regex.match 'abcdef' => #<MatchData:0xb7b46a18> >> regex.match 'abcdefg' => nil >> regex.match 'abcddf' => nil >> regex.match 'abbdtf' => nil >> regex.match 'Abbdtf' => nil >> regex.match 'awesom' => #<MatchData:0xb7b3a5b0> >> regex.match 'hollow' => nil Fedor Labounko wrote: > On 1/7/07, Daniel Finnie <danfinnie / optonline.net> wrote: > >> # Find words that use the same letters >> selectedWords = dict.scan(/^[#{baseWord}]{3,6}$/) > > > I was really impressed when I first saw this. It doesn't quite work if you > want to exclude reusing the same letter more than once > ("hhh".scan(/^[hello]{3,6}$/) => ["hhh"]) but it comes so close to > something > I've only ever thought about implementing as a recursive method. > Unfortunately I don't know much about this but now I wonder if it's > possible > to find all partial permutations of a word with a regexp. >