Short answer
Your uid does not begin with a 'p'. All rules are checking that it begins with 'p'.
Long answer
$match1 = preg_match('/^p[a-z\d][a-z\d][1-6][a-z]\d{2}e$/',$uid);
This is checking for something of the format:
the letter p, lowercase letter, 1 digit number, lowercase letter, 1 digit number, number from 1 to 6, lowercase letter, number (1 or 2 digits), the letter e
$match2 = preg_match('/^p[a-z\d][a-z\d]school$/',$uid);
This is checking for something of the format:
the letter p, lowercase letter, 1 digit number, lowercase letter, 1 digit number, the word 'school'
$match3 = preg_match('/^p[a-z\d][a-z\d]master$/',$uid);
This is checking for something of the format:
the letter p, lowercase letter, 1 digit number, lowercase letter, 1 digit number, the word 'master'
$match4 = preg_match('/^p[a-z\d][a-z\d]ee01$/',$uid);
This is checking for something of the format:
the letter p, lowercase letter, 1 digit number, lowercase letter, 1 digit number, the string 'ee01'
EDIT
If you wish to add 'c' to the allowed characters at the start of the matching, you can, for example do:
$match1 = preg_match('/^[cp][a-z\d][a-z\d][1-6][a-z]\d{2}e$/',$uid);
[cp] instead of p checks for EITHER c or p as the first letter.
$uid = ca11a15ebe$uid = 'ca11a15e'is basically @LeonardChallis questionpreg_match('/^p[a-z\d][a-z\d]([1-6][a-z]\d{2}e|school|master|ee01)$/',$uid);