Reputation: 951
I need to build a regular expression which should apply for the following:
(Valid for 1 - 4 Blocks (seperated with "/") which contain exactly 4 characters that are HEX numbers)
Valid example 1: 3F00 / FA41 / FA12 / B12F
Valid example 2: 4F0T
Valid example 3: FFFF / FF21
Invalid example 1: 34BF /
Invalid example 2: 45FB2
Invalid example 3: 4B5S / BD45 BA56
Invalid example 4: FF02/B200
...
I just can't figure it out. Here's what I have for now:
1: ([0-9A-F]{4})( \/ \1){1,3}|[0-9A-F]{4}
2: [0-9A-F]{4} \/ [0-9A-F]{4} \/ [0-9A-F]{4} \/ [0-9A-F]{4}|[0-9A-F]{4} \/ [0-9A-F]{4} \/ [0-9A-F]{4}|[0-9A-F]{4} \/ [0-9A-F]{4}|[0-9A-F]{4}
Second pretty ugly and both not working!
Upvotes: 3
Views: 114
Reputation: 25397
I think this might work, if the input is given line by line:
^([0-9A-F]{4})( \/ [0-9A-F]{4}){0,3}$
Upvotes: 1
Reputation: 7880
This should do the trick:
^[\dA-F]{4}( \/ [\dA-F]{4}){0,3}$
It matches the first block (4 hex characters) and then optionally matches 0-3 subsequent blocks separated by /
.
Upvotes: 3
Reputation: 186823
I suggest
^[0-9A-F]{4}( \/ [0-9A-F]{4}){0,3}$
pattern:
^ - string start
[0-9A-F]{4} - 4 hex digits
( \/ [0-9A-F]{4}){0,3} - up to 3 more 4 digits groups
$ - string end
Upvotes: 4