Mr. Toast
Mr. Toast

Reputation: 951

Specific regex in C# .NET

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

Answers (3)

Mithrandir
Mithrandir

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

Andrew
Andrew

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

Dmitrii Bychenko
Dmitrii Bychenko

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

Related Questions