From: MenTaLguY Date: 2006-12-07T07:43:34+09:00 Subject: Re: Why is this regex invalid? On Thu, 7 Dec 2006 07:38:10 +0900, Daniel Finnie wrote: > irb(main):002:0> regex = /([0-9]*)([^\+- ]+)(.*)/ > SyntaxError: compile error > (irb):2: invalid regular expression: /([0-9]*)([^\+- ]+)(.*)/ > from (irb):2 > > irb(main):003:0> regex = /([0-9]*)([^\+ -]+)(.*)/ > => /([0-9]*)([^\+ -]+)(.*)/ > > The only thing that it different in the 2 regexps is the placement of > the space in the square brackets, yet the first regexp is invalid and > the 2nd valid. > > Why is this? When an unescaped - appears in any position but the first or final one inside brackets, it is interpreted as a range separator rather than a literal '-'. Apparently '\+- ' isn't a valid range. -mental