Подтвердить что ты не робот

Регулярное выражение для соответствия только нечетному или четному числу

У меня есть список текстовых записей, которые пользователь может ввести в базу данных, и мне нужно проверить эти входы с помощью регулярных выражений, потому что некоторые из них сложны. Одно из полей должно иметь пробелы в числах (т.е. 10, 12, 14, 16...). Мой вопрос в том, есть ли конструкция Regex, которая позволила бы мне выполнять только пробелы с четными или нечетными цифрами? Я знаю, что могу вывести это значение и выполнить проверку деления на него, но я надеялся на чистое решение Regex, если это возможно.

[Изменить]

Решение, которое я закончил использовать на этом, было адаптацией JaredPar, потому что помимо необходимости иметь только нечетные или эвены, мне также необходимо было ограничить диапазон (т.е. все четные числа между 10-40). Ниже закончено Regex.

^ [123] [02468] $

4b9b3361

Ответ 1

Нечетные числа

"^\d*[13579]$"

Четные числа

"^\d*[02468]$"

Пробег коэффициентов с a и потенциальным разделителем пробелов

"$\s*(\d*[13579]\s*,\s*)*\d*[13579]$"

Запуск эвенов с a и потенциальным разделителем пробелов

"$\s*(\d*[02468]\s*,\s*)*\d*[02468]$"

Ответ 2

Regex на самом деле не так сложно проектировать, если учесть, что четное или нечетное число может быть проверено, только глядя на последнюю цифру, которая должна быть четной или нечетной. Таким образом, регулярное выражение для пробелов нечетного числа может быть:

"^(\s*\d*[13579]\s*,)*(\s*\d*[13579]\s*)$"

Замените [13579] на [02468] для четных чисел...

Ответ 3

Вы имеете в виду что-то вроде:

/(\d*[02468](, *\d*[02468]))|(\d*[13579](, *\d*[13579]))/

или одна из трех других возможных интерпретаций вашего вопроса как сформулированная?