Нужно отключить возможность ввода более одного "-" символа

Есть данное регулярное выражение /^[-0-9\b]+(\.\d{0,2})?$/ для валидации положительных и отрицательных чисел

Он отлично работает и для положительных и для отрицательных(например -12.34), но пользователь может несколько раз ввести знак минуса(пример: -12-3-4.12).

Как я могу переписать вышеупомянутый код, чтобы можно было вводить только один минус и только в начале строки?


Ответы (1 шт):

Автор решения: Wiktor Stribiżew

У вас в коде, похоже, используется такой метод, который использует проверку с регулярным выражением для валидации по мере ввода символов ("live validation"). В таких случаях необходимо использовать такое выражение, которое состоит из необязательных шаблонов, т.е. таких, которые могут находить пустую строку.

/^(-(?!\.))?\d*\.?\d{0,2}$/

Это выражение находит

  • ^ - начало строки
  • (-(?!\.))? - необязательный символ -, после которого не должно быть симола .
  • \d* - ноль и более цифр
  • \.? - ноль или одна точка
  • \d{0,2} - 0, 1 или 2 цифры
  • $ - конец строки.

См. пример работы регулярного выражения.

→ Ссылка