ng-шаблон, который допускает десятичные отношения

У меня есть ng-pattern, который соответствует соотношению 4:6, как показано ниже:

ng-pattern="/^(\d+):(\d+)$/"

Я также хочу проверить, введены ли десятичные числа в качестве пайков вместе с приведенной выше проверкой. Пример: 5.4: 7.1 Я трид, указав ng-pattern как

ng-pattern="/^(\.[0-9]{1,2}+):(\.[0-9]{1,2}+)$/"

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


person forgottofly    schedule 30.12.2016    source источник


Ответы (1)


Ваш ^(\.[0-9]{1,2}+):(\.[0-9]{1,2}+)$ не является допустимым шаблоном в JS, поскольку за ограничительным квантификатором {min,max} не может следовать + (движок регулярных выражений JS не поддерживает притяжательные квантификаторы). Даже если убрать плюсы и использовать ^(\.[0-9]{1,2}):(\.[0-9]{1,2})$, шаблон будет соответствовать таким строкам, как .1:.3 или .34:.45, и не позволит 3:45 (точки будут обязательными).

Используйте следующее регулярное выражение, если вы хотите разрешить такие значения, как .5:

ng-pattern="/^\d*\.?\d+:\d*\.?\d+$/"

См. демонстрацию регулярного выражения.

В качестве альтернативы вы можете использовать

ng-pattern="/^(\d+\.)?\d+:(\d+\.)?\d+$/"

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

person Wiktor Stribiżew    schedule 30.12.2016