2016-02-03 2 views
0

Я использую DataAnnotations в MVC для проверки номера карты PAN. Если я проверю свое выражение в сети на https://regex101.com/, оно выполняется правильно. Но когда я пытаюсь использовать его в своем приложении, он дает сообщение об ошибке, как показано на рисунке ниже.Проверка правильности выражения в MVC

enter image description here

Я не понимаю, почему это не удается. Ну, я использовал следующий код для реализации этого в модели. Итак, как я могу его реализовать?

[DisplayName("PAN Number")] 
[Required(ErrorMessage = "* Please Enter PAN No.")] 
[RegularExpression(@"/[A-Z]{5}\d{4}[A-Z]{1}/", ErrorMessage = "* Invalid PAN Number")] 
public string US_PAN { get; set; } 
+1

Добавить 'anchors', ваше регулярное выражение становится'/^ [A-Z] {5} \ d {4} [A-Z] $/'. И вам не нужно '{1}' в последнем '[A-Z]', поскольку он сам соответствует одной букве. –

+0

@noob: это атрибут RegularExpressionAttribute, шаблон привязывается по умолчанию (шаблон должен соответствовать всему вводу). –

ответ

0

Регулярные выражения в .NET не обязательно должны быть заключены в пары //.

regex101 по умолчанию использует php-стиль регулярных выражений - поэтому для него требуется регулярное выражение, содержащее //.

Так что ваш атрибут должен быть только

[RegularExpression(@"[A-Z]{5}\d{4}[A-Z]{1}", ErrorMessage = "* Invalid PAN Number")] 
+1

Зачем объяснять, что уже объяснено? http://stackoverflow.com/questions/31560080/removing-all-non-word-characters-with-regex –

+1

@ WiktorStribiżew Можете ли вы предложить какой-либо поисковый запрос на основе исходного вопроса, который будет показывать ответ, о котором вы упомянули? Что-то вроде «C# regex delimiters» не получается, и я думаю, что его почти невозможно найти, кроме автора ответа –

+0

Я знаю, я не смог его найти. Но эта проблема 1) частая, 2) больше похожа на проблему с опечаткой, чем на реальную проблему, 3) очевидна для любого программиста на C#, который использовал регулярное выражение хотя бы один раз. Я закрываю такие вопросы, как обманы (я держу список). Такие вопросы, как этот, не будут спрашивать «почему мой шаблон с разделителями регулярных выражений не работает», потому что авторы вопроса не знают, что представляют собой разделители регулярных выражений, поэтому найти его с помощью поисковой системы на SO/Google очень сложно. Я отредактировал заголовок вопроса, который я использовал в качестве оригинала, чтобы его легче найти с помощью поисковой системы. –