Check out regex 101. It is a wonderfull Tool to create regular expressions and understand them. From there i got this solution for you:
%^\d{1,2}:\d{1,2}([ap])m\[(Mon|Tue|Wed|Thu|Fri|-){1,} Only\]$%mg
The first bit (\d{1,2}) accepts a number between 0 and 99, then a : and another number between 0 and 99.
Then it is either a or p followed by m.
Then you have either Mon or Tue or …. or - for 1 to endles times.
At the end you have the modifiers g and m.
The m is to make use of the ^ and $ modifiers that represent the beginning and the end of a line.
The g is just to find ALL results rather than the first existing. You can leave that out.
To use Weekdays from an array called $array simply implode it to a string and fill it into your expression like this:
$weekdaysString = implode('|',$array);
$regex = '%^\d{1,2}:\d{1,2}([ap])m\[('.$weekdaysString.'|-){1,} Only\]$%mg';
Read up on implode.
8
solved PHP Check complicated String for correct format