Quiero hacer una verificación preliminar si la cadena ingresada se ve como Vehicle Identification Number (VIN). Sé lo que se compone de 17 letras y dígitos, pero las letras I, O y Q no están permitidos dentro de VIN, así que utilizo esta expresión regular:¿RegularExpressionValidator utiliza otro sabor que Regex?
^[0-9A-Z-[IOQ]]{17}$
Ahora bien, si puedo comprobar una cadena como 1G1FP22PXS2100001 con RegularExpressionValidator falla , pero CustomValidator con este controlador de eventos OnServerValidate
Regex r = new Regex("^[0-9A-Z-[IOQ]]{17}$");
args.IsValid = r.IsMatch(TextBox1.Text);
funciona bien.
Los experimentos muestran que RegularExpressionValidator no admite Character Class Subtraction, pero la clase Regex sí.
Ahora me interesa ¿por qué estas dos clases de .NET utilizan diferentes sabores de expresiones regulares? ¿Está documentado algo?
Acabo de poner los enlaces directamente en mi respuesta en lugar de "ocultarlos" en los comentarios. – VonC