$re = '/^:(?![^:]*([^:])[^:]*\1)[dgimsuy]{0,7}:$/m';
$str = '::
:g:
:d:
:i:
:m:
:s:
:u:
:y:
:dg:
:gi:
:ms:
:uy:
:sd:
:mu:
:yi:
:dgi:
:gms:
:iuy:
:sdm:
:ymu:
:dgim:
:gims:
:iysu:
:msuy:
:dgims:
:gimsu:
:iysum:
:mugsy:
:dsygiu:
:gsiumd:
:ydsugi:
:isgumy:
:mugydi:
:ysgmdi:
:sgydmi:
:yigdsm:
:mudysg:
:gsdiuy:
:digmsuy:
:sudgimy:
:ydugsim:
:mudyisg:
:sgimydu:
:ysgidum:
:muidsyg:
:gusdymi:
:yidgums:
:sugmidy:
:gg:
:dd:
:ii:
:mm:
:ss:
:uu:
:yy:
:dgg:
:idd:
:iig:
:mmm:
:sms:
:uuu:
:yyy:
:dggi:
:iddd:
:iigm:
:mmmm:
:smss:
:uuuu:
:yyyy:
:dggiu:
:idddm:
:iigmy:
:mmmms:
:smsss:
:uuuuy:
:yyyym:
:dgimsguy:
:ydsgimuy:
:dgimsuyy:';
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