$re = '/^(?!(?:((\d{1,3}([FM])\.(Front|Profile|Right)\.(Anger|Fear|Frown|Smile)\.(BW\.Micro|BW|C\.Micro|C)))|(\d{1,3}(F|M)\.(Front|Profile|Right)\.(Neutral|Smile)\.(C\.Micro|C|BW\.Micro|BW|HighLight|LowLight|MedLight)\.(BW\.Micro|BW|C\.Micro|C))|(\d{1,3}(F|M)\.(Selfie1|Selfie2|StudentID)\.(C\.Micro|C|BW\.Micro|BW)))).*$/m';
$str = '95F Front Anger BW
95F Front Anger BW
95F Front Anger.BW
95F.Front.Anger.C.Micro
95F.Front.Fear.C.Micro
95F.Front.Frown.BW
-95F Front Anger BW.jpg
-95F.Front.Anger.C.Micro.jpg
-95F.Front.Fear.C.Micro.jpg
-95F.Front.Frown.BW.jpg';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php