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?
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 hope this helps
Stefano
···
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
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
Hope this helps,
Jesus.
···
On Mon, Jan 11, 2010 at 1:39 PM, Chris Lervag <chris.lervag@gmail.com> 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?
>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.
>> 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/
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).
···
On Jan 11, 5:57 am, Robert Klemme <shortcut...@googlemail.com> wrote:
> On Monday 11 January 2010, Chris Lervag wrote:
>> >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/