2016-05-18 5 views
1

мне нужно регулярное выражение для сопоставления суммы в диапазоне от 10 до 10000 (включительно) До сих пор я придумал что-то вроде этого:Regex для сопоставления диапазона суммы

^(?:[1-9]\\d{0,3}?)$ 

Но есть два проблемы, связанные с ним:

  • Это соответствует чему-либо до 10, например 5
  • Это исключает 10000

Я знаю, что использование регулярного выражения в соответствии с диапазоном не является самой большой идеей, но это нужно сделать таким образом.

+1

См [подобный вопрос, '1' до' 1000'] (HTTP: // StackOverflow .com/questions/4484168/regex-for-range-1-1000) –

+0

попробуйте с помощью '^ (?: [1-9] \\ d {1,4}?) $' – ypp

+0

Проверьте ['^ ([1 -9] [0-9] {1,3} | 10000) $ '] (https://regex101.com/r/pT7wK6/1) –

ответ

1

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

^([1-9][0-9]{1,3}|10000)$ 

См детализирует regex demo

Pattern:

  • ^ - начало строки
  • ([1-9][0-9]{1,3}|10000) - чередование с 2-х вариантов:
    • [1-9][0-9]{1,3} - цифра от 1 до 9, за которыми следуют от 1 до 3 любых цифр ({1,3} важен для исключения соответствия 5 и всех номеров до 10), и он соответствует целым числам от 10 до 9999 без начальных нулей.
    • | - или
    • 10000 - это 10000 номер
  • $ - конец строки
1

Вы можете сказать что-то вроде:

^([1-9][0-9]{1,3}|10000)$ 

Смотрите в тесте: https://regex101.com/r/wK4bC6/6

Это либо соответствующий двум 10000 или [1-9][0-9]{0,3}, это второй из которых любое число от 10 до 9999.