2011-01-14 1 views
4

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

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

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

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

Любые идеи?

+2

Что делать, если положить в чем-то вроде «555-1212 доб 323»? –

+2

http://www.smartwebby.com/DHTML/phone_no_validation.asp –

ответ

12

Вы можете сделать тест вроде этого:

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

Это подведет, если есть не-цифры в строке или строка меньше, чем 10 символов длиной

+1

+1 для ответа на фактический вопрос (хотя, вероятно, хорошо проверить, является ли это уже номером).Но, как указывает Диодеус, номера телефонов не являются целыми числами, а управление OP по-другому будет хорошим. –

+4

Просто использовать regex '^ [0-9] {10,} $' было бы достаточно – darioo

+0

@TJ Вы абсолютно правы, мой ответ был немного ленив: s –

1

Может быть избыточен для вас , но Google не так давно объявил library для проверки телефона. Варианты Java и Javascript доступны.

3

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

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

Существует уже SO-вопрос об этой проблеме: Validate decimal numbers in JavaScript - IsNumeric()

1

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

00 34 922-123-456 

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

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

    http://regexlib.com/

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

  • Используйте зацикливание, чтобы проверить каждый символы в свою очередь, то есть это символ INT или тире

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

0

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

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 
+0

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

+1

'+" \ r "=== ~~" \ r "' дает true. Хм ... –