$re = '/^\$?[A-Z]+\$?\d+(?::\$?[A-Z]+\$?\d+)?(?:,\s*(?:\$?[A-Z]+\$?\d+(?::\$?[A-Z]+\$?\d+)?))*$/m';
$str = 'E5
AA55:E5
DD5555:DDD55555, E5, F5:AA55
$F7:$G$7
bis_document_id
PCR1MM_YPCVolume
sheet_error7
blahE5
training_A1
myNameIsGeorgeJR
';
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