Проверка правильности десятичных чисел в JavaScript - PullRequest
6 голосов
/ 22 марта 2010

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

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

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

Ответы [ 5 ]

27 голосов
/ 22 марта 2010
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
3 голосов
/ 22 марта 2010

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 голосов
/ 22 марта 2010

попробуйте это:

^[-+]?\d+(\.\d+)?$
0 голосов
/ 02 января 2014

! IsNaN (текст) && parseFloat (текст) == текст

0 голосов
/ 22 марта 2010

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

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

valid=/^[+\-]?(\.\d+|\d+(\.\d+)?)$/.test(val);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...