Проверьте 11 цифр в JavaScript - PullRequest
       2

Проверьте 11 цифр в JavaScript

3 голосов
/ 08 февраля 2012

Может быть простой вопрос, но я не могу найти ответ, который соответствует этому биту кода: (

Мне нужно подтвердить номер телефона, чтобы ТОЛЬКО 11 цифр (без букв)

    function validateForm3() {
  var x=document.forms["booking"]["number"].value;
if (x==null || x=="")
  {
  alert("Please fill in 11 numbers");
  return false;
  }
   var x=document.forms["booking"]["email"].value;
if (x.indexOf("@")=== -1)
  {
  alert("Please enter a valid email");
  return false;
  }
}

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

Ответы [ 8 ]

8 голосов
/ 08 февраля 2012

Использование regexp.test:

if (! /^[0-9]{11}$/.test(x)) {
  alert("Please input exactly 11 numbers!");
  return false;
}

Обратите внимание, что вы намеренно исключаете множество телефонных номеров, включая международные или альтернативные стили написания телефонных номеров, на которые вы можете дозвониться. Вы должны просто проверить на /^\+?[0-9]+$/.

1 голос
/ 08 февраля 2012

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

"1234".match(/^\d{4}$/);

Пояснение:

^   - matches the beginning of the string
\d  - matches one digit
{4} - tells that we want four digits (you want thirteen then)
$   - matches the end of the string

См. https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions для дальнейшего чтения.

1 голос
/ 08 февраля 2012
if (!/^\d{11}$/.test(x)) 
    alert('These are not 11 digits!');
else 
    alert('Passed!');

Попробуй http://jsfiddle.net/LKAPN/1/

0 голосов
/ 08 февраля 2012

У Стивена Левитана есть очень полезная выдержка из регулярных выражений, которая проверяет североамериканские, а также международные телефонные номера на http://blog.stevenlevithan.com/archives/validate-phone-number.

Эта страница взята из его книги Книга регулярных выражений (О'Рейли, 2009)

0 голосов
/ 08 февраля 2012

Вы можете использовать регулярное выражение:

\d{11}

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

var isElevenNumbers = (/^\d{11}$/m.test(mynumber.replace(/\s]/g, '')));

И вы можете захотеть убрать больше для международных номеров, например+ 1-234-567-9090

var isElevenNumbers = (/^\d{11}$/m.test(mynumber.replace(/[\s\+\-]/g, '')));

где mynumber - ваша переменная, содержащая значение.

0 голосов
/ 08 февраля 2012

хак, но вы могли бы сделать:

if(x.length==11)
{
    for (var i=0; i<x.length; i++)
    {
        if (parseInt(x[i])!=x[i])
        {
            alert("only enter numbers!");
        }
    }
}
else
{
    alert("must enter 11 digits!");
}
0 голосов
/ 08 февраля 2012

Может быть что-то вроде:

if (x.length == 11 && +x == x)
0 голосов
/ 08 февраля 2012

Вы можете использовать регулярные выражения для этого:

var str = '12345678900';
if (str.match(/^\d{11}$/)) {
    // Valid
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...