Regex для директивы по номеру - PullRequest
1 голос
/ 14 июня 2019

У меня есть директива для ввода в угловое приложение.

Я строю регулярное выражение для принятия:

  • 1,2,3.2
  • 1222,23
  • 333333

Не принимает:

  • 1,, 333
  • 132, .1
  • -123

Я долженпроверяйте char по char, что я не вводю целое число на входе.Моя попытка не работает.

^[,]{0,1}\d{0,10}[,]{0,1}([.]?\d{0,2})

1 Ответ

1 голос
/ 17 июня 2019

В самом общем случае вы можете использовать

^\d+(?:,\d+)*(?:\.\d+)?$ // 432 or 4.653 or 1,44,43211 or 1,4456,43211754.876597

См. Демонстрационный пример регулярных выражений и график регулярных выражений :

enter image description here

Подробности

  • ^ - начало строки
  • \d+ - 1+ цифр
  • (?:,\d+)* - 0 или более повторений , и 1+ цифр
  • (?:\.\d+)? - 1 или 0 повторений . и 1+ цифр
  • $ - конец строки.

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

^(?!(?:,?\d){6})\d+(?:,\d+)*(?:\.\d{1,3})?$
 ^^^^^^^^^^^^^^^

Отрицательный прогноз (?!(?:,?\d){6}) провалит совпадение, если в целой части числа 6 или более цифр.Если вы хотите ограничить длину целого числа, измените lookahead на (?!.{6}), и он будет соответствовать только числам до 5 символов: 1, 1.55, 35.99, но не 100.12 (= 6 символов).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...