Подтвердите ввод только числом и десятичной дробью после точки - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь сделать проверку, которая должна принимать десятичные числа с максимум 3 полями. Запятая может появиться только в том случае, если введено хотя бы одно число

Allow:
100000
1,0
1
1,00


Doesn't Allow:
00
, 150
, 0
100 100

Я попробовал (я использую React для получения входного значения):

var code = (event.which) ? event.which : event.keyCode;
if (code !== 46 && (code < 48 || code > 57)) {
   event.preventDefault();
}

Пока мне удалось ограничить только поля и точку. Но он по-прежнему допускает .000 и не ограничен тремя десятичными знаками.

Как я могу это сделать?

-------------- ОБНОВЛЕНИЕ РЕШЕНИЯ --------------

Я нашел этот ответ , который решил мою проблему. Большое спасибо за вашу помощь, ребята

1 Ответ

1 голос
/ 17 апреля 2019

Я не уверен, что хорошо понял ваш вопрос (я могу обновить свое решение на основе ваших входных данных), но я думаю, что вам нужно регулярное выражение, соответствующее вашему общему значению, а не отдельным входным данным:

function is_valid(value) {
  var exp = /^\d+(,*\d+)?$/;
  return exp.test(value)
}

tests = ["100,000", "1,0", "1", "1,00", ",00", ",150", ",0", "100 100"]

for(var i=0; i<tests.length; i++) {
  console.log(tests[i], is_valid(tests[i]))
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...