Вот как это своего рода регулярное выражение работает
ones: ^[0-9]$ // just set the numbers -- matches 0 to 9
tens: ^[1-3]?[0-9]$ //set max tens and max ones -- matches 0 to 39
tens where max does not end in 9 ^[1-2]?[0-9]$|^[3][0-4]$ // 0 to 34
only tens: ^[1][5-9]$|^[2-3][0-9]$|^[4][0-5]$ // 15 to 45
Здесь, позволяет выбрать произвольное число 1234 к 2345
^[1][2][3][4-9]$|
^[1][2][4-9][0-9]$|
^[1][3-9][0-9][0-9]$|
^[2][0-2][0-9][0-9]$|
^[2][3][0-3][0-9]$|
^[2][3][4][0-5]$
https://regex101.com/r/pP8rQ7/4
В основном окончание средней серии всегда нужно быть прямым диапазоном, который может достигать 9 , если мы имеем дело с одним местом, и если это вы должны строить его вверх до середины каждый раз, когда у нас есть значение, которое не может начинаться с 0, а затем, когда мы достигнем значения, которое не может закончиться в 9 разрыве раньше и установить его в следующем состоянии.
Обратите внимание на шаблон, поскольку каждое место затвердевает. Также имейте в виду, что, имея дело с переходом от более низких к более высоким местам, необязательные операторы? должен быть использован.
Его немного сложнее, но его нигде почти невозможно спроектировать пользовательский диапазон с небольшим количеством мыслей.
Если вы более конкретно, мы можем создать точный пример, но это, как правило, так: beginning-range|middle-range|end-range
В некоторых случаях вам понадобятся только начальные или конечные диапазоны, например, если min или max не заканчиваются 9.? означает, что диапазон, который приходит после него, является необязательным. (так, например, в первом случае он позволяет иметь как одиночные, так и двойные числа.
так за 100 - 1999 это очень просто на самом деле, потому что у вас есть много 9 и 0
/^[1-9][0-9][0-9]$|^[1][0-9][0-9][0-9]$/
https://regex101.com/r/pP8rQ7/1
Примечание: единичные значения не нужны диапазоны [N] Я просто добавил их читаемость.
Не могли бы вы обновить свой вопрос: 1) ваш образец ввода с ожидаемым поведением 2) что вы точно пробовали и как 3) и, конечно, ваш язык программирования. –
Я предлагаю вам взглянуть на [Как написать регулярное выражение, соответствующее IPv4] (https://blogs.msdn.microsoft.com/oldnewthing/20060522-08/?p=31113/). Это не ответ (или даже форум), но интересно читать и подчеркивает, почему вы можете делать много вещей с помощью регулярных выражений, но вы не всегда должны их делать. Что касается вашего вопроса, если числа не исправлены, вы явно не можете написать статическое регулярное выражение, и если вы можете использовать язык программирования для построения выражения, вы, вероятно, можете использовать этот язык, чтобы просто сравнивать числа в более простом виде. –
@ WiktorStribiżew попробовал обновить его по вашему запросу – DaCh