Regex для комбинации буквенно-цифровых символов и диапазона чисел - PullRequest
1 голос
/ 29 сентября 2019

Мне нужно регулярное выражение для ввода PORT, оно должно разрешать только такие вводы:

gei_1/8 or xgei-0/7/0/5

-Он должен разрешать подчеркивание и дефис только в начале: gei_1 или xgei-0

- Затем он должен разрешать двузначные числа в диапазоне от 0 до 48, разделенные косой чертой без пробелов между ними. Не более трех чисел: /7/0/48

-Не допускается косая черта или что-либо в конце

Сейчас у меня есть следующее регулярное выражение для буквенно-цифровой части: /^[A-Za-z][A-Za-z0-9]*(?:_[A-Za-z0-9]+)*$/

Для номерной части у меня есть: ^(\d|1\d|2\d|3\d|4[0-8])\/(\d|1\d|2\d|3\d|4[0-8])\/(\d|1\d|2\d|3\d|4[0-8])$

Спасибо за помощь

1 Ответ

1 голос
/ 29 сентября 2019

Чтобы повторить прямую косую черту 1–3 раза, вы можете использовать диапазон для совпадения 0–48 и повторить это 1-3 раза, используя квантификатор {1,3}

(?:\/(?:[0-9]|[1-3][0-9]|4[0-8])){1,3}

Полный шаблон может выглядеть следующим образом

^[A-Za-z][A-Za-z0-9]*[_-][A-Za-z0-9]+(?:\/(?:[0-9]|[1-3][0-9]|4[0-8])){1,3}$

Regex demo

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