2015-04-01 3 views
0

У меня проблема с regx.Ismatch. Мне нужно, чтобы проверить строку в этом формате, @"[O]-[0-9]{8}-[0-9]{5}-[0-9]-[0-9]-[0-9]", я использую этот код:Проблемы с проверкой Regex.IsMatch

if (!Regex.IsMatch(vm.CadastralNumber, @"[O]-[0-9]{8}-[0-9]{5}-[0-9]-[0-9]-[0-9]")) 
    ModelState.AddModelError("CadastralNumber", "Prefix should be O, or the format is not correct"); . 

Но у меня проблема, после этого формата мне нужно пользователю, чтобы не допустить, чтобы писать большее количество как -[0-9]-[0-9]-[0-9]-[0-9]. Он никогда не останавливается, мне нужно, чтобы пользователи писали только тот формат, который я дал вначале, а не наживать больше. Любая помощь?

+1

Где находится LINQ здесь? – xanatos

ответ

0

Запишите его как @"^[O]-[0-9]{8}-[0-9]{5}-[0-9]-[0-9]-[0-9]$", чтобы регулярное выражение совпало с началом (^) и концом ($) строки.

0

Вы должны использовать якоря, ^ (начало строки) и $ (конец строки). Вы также можете использовать регулярное выражение для чистых элементов:

@"^O-\d{8}-\d{5}(?:-\d){3}$" 
+1

Обратите внимание, что '\ d' в C# соответствует неарабским цифрам, например''. – xanatos

Смежные вопросы