$re = qr[\d+\D+Y\D(\d|$)];; print '\\files\builds\data\M9998SBQCACSYD30401S' =~ $re ? 'yes' : 'no';; yes print '\\files\builds\data\M9998SBQCACSXD30401S' =~ $re ? 'yes' : 'no';; no #### $re = qr[ \d+ # after the first (and any subsequent digits ) \D* # there should be some none digits Y # and a Y \D # followed by only one more non-digit (\d|$) # before another digit or end of string ]x;