Regex для диапазона чисел и одного символа для проверки - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь использовать Regex для проверки ввода пользователя в проект, над которым я работаю.Шаблон, который я сейчас использую:

^[1-9][0-3]?|[Q|q]$ //Range of 1-13 or Q|q (Can't include 0)

. Согласно Regex101.com, он показывает, что пользовательский ввод, скажем 15, не совпадает, но когда я запускаю проект, он действует так, как если бы он былматч.Как мне ограничить это регулярное выражение, чтобы принимать только диапазон чисел от 1 до 13 и символ Q или q?Для контекста только в том случае, если мой цикл while неправильный, вот этот код.

 while (!match.Success)
        {
            // Ommited Console.WriteLines to for clarity.
            FancyArtBottom();
            Console.SetCursorPosition(47, 19);
            userSelection = Console.ReadLine();
            match = Regex.Match(userSelection, @"^[1-9][0-3]?|[Q|q]$");
        }

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Вы можете использовать следующее:

^(1[0-3]|[1-9]|Q|q)$

Или:

^(1[0-3]|[1-9Qq])$

См. Пример: https://regex101.com/r/y6htBi/1

0 голосов
/ 17 сентября 2018

Шаблон ^[1-9][0-3]?|[Q|q]$ соответствует цифре от 1 до 9, за которой следует необязательная цифра от 0 до 3 в начале строки (с частью ^[1-9][0-3]?) или (|) a Q, | или q в конце строки (с частью [Q|q]$). Таким образом, | «разделяет» шаблон, и он соответствует больше, чем вы ожидаете.

Кроме того, [1-9][0-3]? просто соответствует более чем числам от 0 до 13, как вы видите.

Кроме того, | внутри символьного класса соответствует буквальному символу |, он теряет свое специальное значение оператора чередования .

Вы можете использовать

^(?:[1-9]|1[0-3]|[Qq])$

См. Демоверсию regex

Детали

  • ^ - начало строки
  • (?:[1-9]|1[0-3]|[Qq]) - конструкция группировки (a группа без захвата ) (при которой якоря ^ и $ применяются ко всем альтернативам в группе), соответствующие:
    • [1-9] - цифра от 1 до 9
    • | - или
    • 1[0-3] - 1, а затем цифра от 0 до 3
    • | - или
    • [Qq] - q или Q
  • $ - конец строки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...