在JavaScript中验证11位数

时间:2012-02-08 00:39:01

标签: javascript validation

可能是一个简单的问题,但我找不到适合这段代码的答案:(

我需要验证电话号码是否只有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 个答案:

答案 0 :(得分:8)

使用regexp.test

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

请注意,您有意排除了许多电话号码,包括国际电话号码或您可以覆盖的电话号码的替代写作方式。你应该只测试/^\+?[0-9]+$/

答案 1 :(得分:1)

if (!/^\d{11}$/.test(x)) 
    alert('These are not 11 digits!');
else 
    alert('Passed!');

试试吧 http://jsfiddle.net/LKAPN/1/

答案 2 :(得分:1)

使用正则表达式:

"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

答案 3 :(得分:0)

您可以使用正则表达式:

var str = '12345678900';
if (str.match(/^\d{11}$/)) {
    // Valid
}

答案 4 :(得分:0)

可能是这样的:

if (x.length == 11 && +x == x)

答案 5 :(得分:0)

有点hacky,但你可以这样做:

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!");
}

答案 6 :(得分:0)

您可以使用正则表达式:

\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'是保存值的变量。

答案 7 :(得分:0)

Steven Levithan在Regexps上有一个非常有用的摘录,可以在http://blog.stevenlevithan.com/archives/validate-phone-number验证北美和国际电话号码。

该页面摘自他的书正则表达手册(O'Reilly,2009)