У вашего текущего регулярного выражения есть некоторые большие проблемы, например, [0,5]
означает не 0
или 5
, а 0
, ,
или 5
. Вместо этого попробуйте следующее регулярное выражение:
^(?=.)(?:\d|1[0-3])?(?:\.5)?$
Смотрите живое демо здесь
На основании ваших разрешенных примеров он соответствует 12
, но не соответствует 12.0
. Если вы также хотите сопоставить 12.0
, вы должны заменить \.5
на \.[05]
:
^(?=.)(?:\d|1[0-3])?(?:\.[05])?$
Примечание : позитивный взгляд (?=.)
гарантирует, что пустое совпадение не произойдет.