Harry Kakueki wrote:
> Somehow I have the syntax wrong.

Yes - I don't think a backreference like \1, which could contain any 
number of characters, is usable inside a character class [...], which is 
a list of individual characters.

irb(main):005:0> /[^\1]/ =~ "a"
=> 0
irb(main):006:0> /[^\1]/ =~ "1"
=> 0
irb(main):007:0> /[^\1]/ =~ "\001"
=> nil

So it seems that [^\1\2] means any character apart from \001 (ctrl-A) or 
\002 (ctrl-B)

I think you need a negative lookahead assertion.
* http://www.ruby-doc.org/docs/ProgrammingRuby/
* click on "The Ruby Language"
* scroll to "Extensions"
* look for (?!re)

irb(main):009:0> /^(.)(?!\1)(.)(?!\1|\2)(.)(\2)$/ =~ "abcb"
=> 0
irb(main):010:0> /^(.)(?!\1)(.)(?!\1|\2)(.)(\2)$/ =~ "abbb"
=> nil
-- 
Posted via http://www.ruby-forum.com/.