<?php

$mask = 'X-XX-XX-XXXXX';
$test = '7-Ds-re-SD434';

$pattern = preg_replace_callback('/X+/', function ($m) { 
	return '[^-]{' . strlen($m[0]) . '}'; 
}, preg_quote($mask));

if (preg_match( "/^{$pattern}$/", $test)) {
	echo "Строка '$test' подходит под маску '$mask'"; 
} else {
	echo "Строка '$test' не подходит под маску '$mask'"; 
}