Я согласен, что преобразование в число, вероятно, будет лучше, но если вам нужно использовать регулярное выражение:
Средний термин вашего текущего регулярного выражения неправильный - в настоящее время он соответствует 000001. Вы можете улучшить его, изменив его на
^ [1-9] [0-9] {4 5 } $ | ^ 1 [0-7] [0-9] {5} $ | ^ 1800000 $
В общем, у вас должны быть тестовые случаи, которые проверяют неожиданные входные данные, а также ожидаемые входные данные - ведущие 0, слишком длинные числа, отрицательные значения и т. Д.