RegEx, чтобы разрешить числа и только одну точку - например. это не должно допускать 1.1

Я хочу, чтобы в поле ввода часов разрешались только числа до 2nd десятичной точки (числа только с одной точкой).

Я использовал это выражение для того же /^[0-9]+(\.[0-9]{1,2})?$/, и это позволяет 1.1., которое не должно быть разрешено.


person ronak barbhaya    schedule 07.04.2016    source источник
comment
Не могли бы вы поделиться демонстрационной скрипкой? Вы использовали type="text"? тестовая страница говорит, что шаблон работает хорошо.   -  person Wiktor Stribiżew    schedule 07.04.2016
comment
Этот сайт может помочь вам оценить регулярное выражение: regex101.com   -  person mwoelk    schedule 07.04.2016
comment
Я использовал тип=число   -  person ronak barbhaya    schedule 07.04.2016
comment
@ronakbarbhaya: Вам нужно установить текст.   -  person Wiktor Stribiżew    schedule 07.04.2016
comment
Это работает? Пожалуйста, поделитесь полным соответствующим кодом.   -  person Wiktor Stribiżew    schedule 07.04.2016
comment
Да, это сработало, спасибо, но если я хочу, чтобы это работало с типом = число, то что нужно сделать?   -  person ronak barbhaya    schedule 07.04.2016
comment
Тогда это вообще не сработает, это невозможно.   -  person Wiktor Stribiżew    schedule 07.04.2016
comment
я добавил нижний и верхний предел как 1 и 60 соответственно для этого, поэтому, если я включу type=text, это не даст мне проверки для этого предела.. так что не могли бы вы найти другое решение для этого   -  person ronak barbhaya    schedule 07.04.2016
comment
Нет другого решения, если вы планируете использовать регулярное выражение.   -  person Wiktor Stribiżew    schedule 07.04.2016


Ответы (1)


Шаблон соответствует правильному типу ввода. Тип ввода должен быть установлен как текст:

<input type="text" ng-pattern="/^[0-9]+(\.[0-9]{1,2})?$/" />

Проверка регулярного выражения не поддерживается с type="number".

ОБНОВЛЕНИЕ

Чтобы разрешить только значения с плавающей запятой/целые числа от 1 до 60, используйте

/^([1-9]|[1-5][0-9]|60(\.0{1,2})?$)(\.[0-9]{1,2})?$/

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

  • ^ - начало жала
  • ([1-9]|[1-5][0-9]|60(\.0{1,2})?$) - one of the following:
    • [1-9] - digit from 1 to 9 (no 0 allowed)
    • [1-5][0-9] - числа от 10 до 59
    • 60(\.0{1,2})?$ - 60, за которым необязательно следует .0 или .00, а затем должен следовать конец строки
  • (\.[0-9]{1,2})? - необязательный (1 или 0) ., за которым следует 1 или 2 любые цифры перед...
  • $ - конец строки
person Wiktor Stribiżew    schedule 07.04.2016
comment
тогда как я могу применить верхний и нижний предел как 60 и 1 для этого поля? - person ronak barbhaya; 07.04.2016
comment
т.е. от 1 до 60? - person Wiktor Stribiżew; 07.04.2016
comment
От 1 до 60 используйте /^([1-9]|[1-5][0-9]|60(\.0{1,2})?$)(\.[0-9]{1,2})?$/. - person Wiktor Stribiżew; 07.04.2016