5

Me parece que no puede encontrar un tema similar desbordamiento de pila en relación con esto, así que aquí va:ASP.NET MVC [RegularExpression] Atributo que no funciona en la cadena completa de ajuste de

¿Por qué es cuando especifico contra mi ASP .NET MVC clase de vista modelo de la siguiente definición:

[Required] 
[RegularExpression(@"\A\d{3,4}\Z", 
    ErrorMessage = "The security code (CVN) must be between 3 - 4 digits long.")] 
[Display(Name = "Card Security Code (CVN)")] 
public string CardCVN { get; set; } 

Que en mi prueba de validación del lado del cliente discreta con la expresión regular no puede ser validado? (y posteriormente muestra un error de campo de formulario).

Parece que tan pronto como mi expresión regular se cambia a [RegularExpression(@"\d{3,4}"... eliminando toda la técnica de coincidencia de cuerdas, ¿coincide perfectamente? y parece que la validación jquery que representa, aunque no se aplica \A o \Z, coincide de todos modos con la coincidencia de cadena completa (¡haciendo lo que originalmente necesitaba!); ¿Me estoy perdiendo de algo?

Gracias.

Respuesta

3

En el lado del cliente, la expresión regular se ejecuta mediante JavaScript, y JS no admite \A, \Z o \z. Puede usar ^ y $ en su lugar, pero no debería necesitarlo. Las expresiones regulares usadas en validadores generalmente se anclan en ambos extremos automáticamente. Estoy bastante seguro de que ese es el caso con ASP.NET MVC.

+0

Gracias Alan. Interesante, uno imaginaría ASP.NET MVC realmente debería haberlo convertido entonces :) – GONeale

2

Use este lugar: @"^\d{3,4}$"

^ - inicio de la cadena.

$ - final de la secuencia.

+1

Te perdiste el \ on \ d. Sin embargo, gracias por la respuesta. Sin embargo, le otorgaré a Alan los puntos mientras explicaba su respuesta. – GONeale

Cuestiones relacionadas