Проверьте строку на наличие целого числа
-
11-10-2019 - |
Вопрос
Я хочу проверить поле ввода. Пользователь должен ввести номер телефона с минимальной длиной 10 цифр.
Поэтому мне нужно проверить на незаконные чары. Было бы неплохо просто проверить, что вход является целым числом или нет.
Я придумал это, но это не работает (n будет строкой).
function isInt(n){
return typeof n== 'number' && n%1==0;
}
Любые идеи?
Решение
Вы можете сделать тест, как это:
input.length >= 10 && /^[0-9]+$/.test(input)
Это не удастся, если в строке не будет цифр, или строка составляет менее 10 чар, длину
Другие советы
Это должно работать ((input - 0)
автоматически пытается преобразовать значение в число):
function isInt(input){
return ((input - 0) == input && input % 1==0);
}
В этой проблеме уже есть такая вопрос: Проверить десятичные цифры в JavaScript - isNumeric ()
Может быть для вас излишним, но Google не так давно объявил библиотека для проверки телефона. Доступны варианты Java и JavaScript.
Проверка номера телефона немного сложнее, чем проверить, является ли вход целым числом. В качестве примера телефонные номера могут и начинаются с нулей, так что это не технически, а Int. Также пользователи могут вводить тире: например:
00 34 922-123-456
Итак, что касается подтверждения, у вас есть пара вариантов:
Используйте выражение Regex для проверки, посмотрите на:
Этот сайт будет иметь сотни примеров
Используйте цикл, чтобы проверить каждого символы по очереди, то есть символ Int или Dash
Я бы порекомендовал первое, так как последний зависит от последовательного ввода пользователей, и вы не получите это
Почему бы не использовать:
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