Проверка десятичных чисел JavaScript

Я использую следующий regexp для проверки чисел в моем файле JavaScript:

var valid = (val.match(/^\d+$/));

Это хорошо работает для целых чисел как 100, 200, и т.д., однако для вещей как 1,44, 4.11, и т.д., это возвращает false. Как я могу изменить его так, числа с десятичным числом также приняты?

6
задан Click Upvote 22 March 2010 в 20:16
поделиться

4 ответа

var valid = (val.match(/^\d+(?:\.\d+)?$/));

Матчи:

 1  : yes
 1.2: yes
-1.2: no
+1.2: no
  .2: no
 1. : no

var valid = (val.match(/^-?\d+(?:\.\d+)?$/));

Матчи:

 1  : yes
 1.2: yes
-1.2: yes
+1.2: no
  .2: no
 1. : no

 var valid = (val.match(/^[-+]?\d+(?:\.\d+)?$/));

Матчи:

 1  : yes
 1.2: yes
-1.2: yes
+1.2: yes
  .2: no
 1. : no

var valid = (val.match(/^[-+]?(?:\d*\.?\d+$/));

Матчи:

 1  : yes
 1.2: yes
-1.2: yes
+1.2: yes
  .2: yes
 1. : no

var valid = (val.match(/^[-+]?(?:\d+\.?\d*|\.\d+)$/));

Матчи:

 1  : yes
 1.2: yes
-1.2: yes
+1.2: yes
  .2: yes
 1. : yes
27
ответ дан 8 December 2019 в 02:45
поделиться

isNaN мне кажется лучшим решением.

> isNaN('1')
false
> isNaN('1a')
true
> isNaN('1.')
false
> isNaN('1.00')
false
> isNaN('1.03')
false
> isNaN('1.03a')
true
> isNaN('1.03.0')
true
3
ответ дан 8 December 2019 в 02:45
поделиться

Если вы хотите принимать десятичные дроби (включая <1) и целые числа с необязательными знаками + или -, вы можете использовать valid = Number (val).

Или регулярное выражение:

valid=/^[+\-]?(\.\d+|\d+(\.\d+)?)$/.test(val);
0
ответ дан 8 December 2019 в 02:45
поделиться

попробуйте следующее:

^[-+]?\d+(\.\d+)?$
3
ответ дан 8 December 2019 в 02:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: