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?
|
|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.
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?
irb(main):006:0> re = /\A[a-f0-9]{4},[a-f0-9]{4}\z/
=> /\A[a-f0-9]{4},[a-f0-9]{4}\z/
irb(main):007:0> “abcd,4f2ddf” =~ re
=> nil
irb(main):008:0> “abcd,4f32” =~ re
=> 0
|> 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/
|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.
/\A[a-f\d]{4},[a-f\d]{4}\z/
Slightly more terse:
/\A\h{4},\h{4}\z/
…where \h is a hexadecimal character [0-9a-fA-F] (assuming upper-
case a-f is fine).