From: Robert Klemme Date: 2010-01-11T21:57:07+09:00 Subject: Re: Regex help 2010/1/11 Stefano Crocco : > On Monday 11 January 2010, Chris Lervag wrote: >> |Hi >> |I want to test a string for three properties: >> |1) It is exactly 9 characters long. >> |2) Character number 5 is a comma (','). >> |3) The other characters are either numbers 0-9 or letters a-f. >> | >> |I have been able to do this by a combination of strings methods for 1) >> |and 2), and using a regex match on the string (stripped of the comma) >> |with the following code: >> |myString =~ /([^a-f0-9])/ >> | >> |If possible I would like to simplify this by using a more advanced regex >> |match to check all three properties at one time. If this is possible, >> |perhaps one of you regex wizards out there could show me how? :) >> | >> |Best regards, >> |Chris > > You could do this with a regexp which matches the following: > * the beginning of the string > * four characters of type a-f or digits > * a comma > * four characters of type a-f or digits > * the end of the string > > The regexp is: >  /^[a-f\d]{4},[a-f\d]{4}$/ > > Note that your string can contain newlines, you must replace ^ and $ with \A > and \Z respectively. I believe this should rather be \z because \Z allows for a follwing newline. So that would be /\A[a-f\d]{4},[a-f\d]{4}\z/ see http://www.geocities.jp/kosako3/oniguruma/doc/RE.txt Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/