Как создать регулярное выражение со следующими условиями - PullRequest
0 голосов
/ 08 октября 2019

Числовой ввод не должен превышать 8 цифр (считая числа по обе стороны от десятичной дроби). Пример: 123456,78 или 0,12 или 1,23

Числовые значения должны принимать отрицательные числа. Пример: -0,8 или -1,23

Максимально допустимо до 2 десятичных чисел

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

Я пытался создать следующее регулярное выражениено я не могу понять это достаточно эффективно

^-?[0-9]\d*(\.\d+)?[,8]$

Обычный опыт

Ответы [ 2 ]

5 голосов
/ 08 октября 2019

Чтобы соответствовать требуемому количеству цифр и не более, посмотрите в начало шаблона от (?:\d\.?) 1 до 8 раз, а затем сопоставьте \d*(?:\.\d{1,2})?$, чтобы найти число, которое, если содержит десятичные дроби, содержит максимум 2десятичные символы:

^-?(?=(?:\d\.?){1,8}$)\d*(?:\.\d{1,2})?$

https://regex101.com/r/rQMRVX/5

(если вам не нужно для захвата десятичной части, это может быть группа без захвата, как указано выше)

0 голосов
/ 08 октября 2019

Вы можете попробовать это

^-?\d{1,8}.?\d{1,2}$

Ссылка: https://regex101.com/r/x7yw5M/2

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