ASP.NET MVC [RegularExpression] Атрибут не функционирует при полном совпадении строк - PullRequest
5 голосов
/ 08 июня 2011

Похоже, я не могу найти похожую тему по переполнению стека, поэтому вот так:

Почему, когда я указываю для своего класса модели представления ASP.NET MVC следующее определение:

[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; }

Что в моем ненавязчивом клиентском тесте проверки правильности регулярное выражение не может быть проверено?(и впоследствии отображает ошибку поля формы).

Кажется, как только мое регулярное выражение изменяется на [RegularExpression(@"\d{3,4}"..., удаляя всю методику сопоставления строк, она идеально подходит?и кажется, что выполняется проверка jquery, даже если она не применяется \A или \Z, она совпадает только с полным совпадением строк в любом случае (делая то, что мне первоначально требовалось!);Я что-то упустил?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 08 июня 2011

На стороне клиента регулярное выражение выполняется JavaScript, и JS не поддерживает \A, \Z или \z.Вместо этого вы можете использовать ^ и $, но вам это не нужно.Регулярные выражения, используемые в валидаторах, обычно автоматически закрепляются на обоих концах.Я почти уверен, что это так в ASP.NET MVC.

2 голосов
/ 08 июня 2011

Используйте это вместо: @"^\d{3,4}$"

^ - начало строки.

$ - конец строки.

...