Я хочу вводить только числа, начинающиеся с 92 0r 03. Он должен принимать только 12 символов, если начинается с 92, но должен принимать только 11 символов, если начинается с 03. Например, (92307XXXXXXX) или (0307XXXXXXX). Я написал регулярное выражение, но теперь оно работает. При вводе правильного формата пишет неверный номер. Пожалуйста помоги.
[RegularExpression(@"^((\+92)|(0092))-{0,1}\d{3}-{0,1}\d{7}$|^\d{11}$|^\d{4}-\d{7}$", ErrorMessage = "Invalid Mobile Number.")]
This regex should do the job.
^(?:\+?92|0092)\d{10}$|^03\d{9}$
Спасибо. Можете объяснить, почему моя логика не сработала?
Во-первых, вы вставили дефисы в нескольких местах, и это неправильно, потому что в телефонном номере дефисов нет. Затем ваше регулярное выражение допускает неправильные телефонные номера: ^((\+92)|(0092))-{0,1}\d{3}-{0,1}\d{7}$ За 92 или 0092 вы вставили {0,1}, поэтому 92 или 0092 являются факультативными. Поэтому, если я введу 040 (например), а затем 7 цифр, это будет соответствовать
Пожалуйста, четко определите формат, который вы пытаетесь сопоставить, с примерами и покажите некоторые примеры входных данных, которые вы пробовали, и какой результат вы получили для них.