Чтобы соответствовать всей строке, которую вы могли бы использовать:
^2(49|5[0-9]|6[0-8])$
Посмотреть демо: https://regex101.com/r/rJ2lH5/1
(Если вы не хотите, чтобы соответствовать всей строке, вы можете удалить ^
и $
.
Теперь регулярное выражение действительно не знает, соответствует ли это «соответствие диапазонов», это просто матче с номерами, о которых мы говорим. В данном конкретном случае, картина:
^ # assert position at start of a line
2 # matches the character 2 literally
1st Alternative: 49
49 # matches the characters 49 literally
2nd Alternative: 5[0-9]
5 # matches the character 5 literally
[0-9] # match a single character in the range between 0 and 9
3rd Alternative: 6[0-8]
6 # matches the character 6 literally
[0-8] # match a single character in the range between 0 and 8
$ # assert position at end of a line
Вы не должны использовать регулярное выражение, чтобы решить эту –
@anubhava - Это не рецепт для создания регулярных выражений для диапазонов числа. Это гипер-простой вид темы. – sln
Используйте '>' и '<' или если в SQL 'между'. Если вы обновили вопрос на языке, мы могли бы показать вам эффективный способ сделать это. – chris85