Я хочу сделать предварительную проверку, если введенная строка выглядит как Идентификационный номер транспортного средства (VIN) . Я знаю, что он состоит из 17 букв и цифр, но буквы I, O и Q не допускаются внутри VIN, поэтому я использую это регулярное выражение:
^[0-9A-Z-[IOQ]]{17}$
Теперь, если я проверяю строку типа 1G1FP22PXS2100001 с RegularExpressionValidator, она завершается ошибкой, но CustomValidator с этим обработчиком события OnServerValidate
Regex r = new Regex("^[0-9A-Z-[IOQ]]{17}$");
args.IsValid = r.IsMatch(TextBox1.Text);
работает хорошо.
Эксперименты показывают, что RegularExpressionValidator не поддерживает Вычитание класса символов , но класс Regex делает.
Теперь мне интересно, почему эти два .NET-класса используют разные типы регулярных выражений? Это где-то задокументировано?