Проверьте строку на целое число - PullRequest
4 голосов
/ 14 января 2011

Я хочу проверить поле ввода. Пользователь должен ввести номер телефона с минимальной длиной 10 цифр.

Так что мне нужно проверить на незаконные символы. Было бы неплохо просто проверить, является ли ввод целым числом или нет.

Я придумал это, но оно не работает (n будет строкой).

function isInt(n){
    return typeof n== 'number' && n%1==0;
}

Есть идеи?

Ответы [ 5 ]

12 голосов
/ 14 января 2011

Вы можете сделать такой тест:

input.length >= 10 && /^[0-9]+$/.test(input)

Это не удастся, если в строке нет цифр или длина строки меньше 10 символов

3 голосов
/ 14 января 2011

Это должно работать ((input - 0) автоматически пытается преобразовать значение в число):

function isInt(input){
   return ((input - 0) == input && input % 1==0);
}

Уже существует SO-вопрос по этой проблеме: Проверка десятичных чисел в JavaScript -IsNumeric ()

1 голос
/ 14 января 2011

Проверка номера телефона немного сложнее, чем проверка, является ли ввод целым числом.В качестве примера телефонные номера могут начинаться с нуля, поэтому технически они не являются целыми.Также пользователи могут вводить тире: Например:

00 34 922-123-456

Таким образом, для его проверки у вас есть несколько вариантов:

  • Используйте выражение регулярного выражения для проверки, естьвзгляд на:

    http://regexlib.com/

    на этом сайте будут сотни примеров

  • Используйте цикл для проверки каждого символа по очереди, то есть символаint или dash

Я бы порекомендовал первый, так как последний зависит от согласованного ввода от пользователей, и вы не получите этого

1 голос
/ 14 января 2011

Возможно, это будет излишним для вас, но Google не так давно объявил о библиотеке для проверки телефона.Доступны варианты Java и Javascript.

0 голосов
/ 19 апреля 2014

Почему бы не использовать:

return (+val === ~~val && null !== val);

в качестве возврата в вашей функции?

это вывод консоли javascript

> +"foobar" === ~~"foobar"
  false
> +1.6 === ~~1.6
  false
> +'-1' === ~~'-1'
  true
> +'-1.56' === ~~'-1.56'
  false
> +1 === ~~1
  true
> +-1 === ~~-1
  true
> +null === ~~null // this is why we need the "&& null !== val" in our return call
  true 
...