Вы соответствуете только заглавным буквам в своем регулярном выражении, и когда вы используете [A-Z][0-9]{4}
, вы не соответствуете четырем буквенно-цифровым символам, вы сопоставляете букву, за которой следуют 4 цифры.
Итак, вам нужно объединить [A-Z][0-9]
в односимвольные классы [A-Z0-9]
и затем использовать флаг без учета регистра.
Кроме того, вам необходимо использовать $
в конце регулярного выражения, чтобы шаблон соответствовал всемуstring.
Использование
^[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}[.]pdf$
См. демонстрационную версию regex
In C #,
var rx = new Regex(@"^[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}[.]pdf$", RegexOptions.IgnoreCase);
Обратите внимание, что регистр не учитываетсяможет быть установлен с помощью встроенного модификатора (?i)
:
var pattern = @"(?i)^[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}[.]pdf$";
// check if the string matches the pattern
if (Regex.IsMatch(s, pattern)
{
// The string matches...
}