Hi,
Try this out :
If all the characters are in uppercase -
matcher = cl_abap_matcher=>create(
pattern = '(\u{3}\d{2})+(\-)+(\u{3}\d{2})'
text = lv_string ).
IF matcher->match( ) IS INITIAL.
MESSAGE 'Invalid string' TYPE 'I' DISPLAY LIKE 'E'.
ENDIF.
Regards,
DPM