Проверьте ввод пользователя с помощью C # RegularExpressions - PullRequest
0 голосов
/ 01 апреля 2019

Как проверить числовой ввод, максимальная длина ограничена 3 и не должна начинаться с нуля символов (010, 001 должен сделать недействительным). Я использовал C # regex.IsMatch() со следующим регулярным выражением ([1-9]|[1-9][0-9]|[1-9][0-9][0-9])*. Но это проверка входных данных начинается с нуля. Как это решить ..?

Ответы [ 5 ]

4 голосов
/ 01 апреля 2019

Вы можете опустить чередования, повторяя класс символов 0 - 2 раза, и вы должны использовать якоря для подтверждения начала ^ и конца $ строки.

^[1-9][0-9]{0,2}$
  • ^ Начало строки
  • [1-9] Совпадение с цифрой 1-9
  • [0-9]{0,2} Совпадение 0, 1 или 2 раза с цифрой 0-9
  • $ Утверждение конца строки

Использование:

bool isMatch = Regex.IsMatch("100", @"^[1-9][0-9]{0,2}$");

Regex demo

1 голос
/ 01 апреля 2019

[1-9][0-9]{2}$

Это будет работать согласно вашему требованию. тесты на regex buddy со следующими тестовыми примерами

  1. 001 Fail
  2. 1000000 Fail
  3. 900 Pass
  4. 010 сбой
1 голос
/ 01 апреля 2019

Я бы был более конкретен с этим:

^((?!(0))[0-9]{0,3})$ 

Пояснения:

  • 1-й номер не равен 0, и я хочу максимум 3 цифры от 0 до 9.
1 голос
/ 01 апреля 2019

Regex прекрасно уверены. Обратите внимание, что вы можете легко достичь этого без каких-либо регулярных выражений:

static bool IsValid(string input)
{
    return !string.IsNullOrEmpty(input)
        && input.Length < 3 && !input.StartsWith("0") && input.All(char.IsDigit); 
}

Попробуйте онлайн

0 голосов
/ 01 апреля 2019

Вы можете использовать ^[1-9][0-9]{0,2}$, это не позволит начать с нуля

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...