2012-02-08 53 views
1

可能是一個簡單的問題,但我不能找到適合的代碼:(驗證11位在JavaScript

這一點,我需要驗證電話號碼具有完全相同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; 
    } 
} 

我真的不能改變這個結構,所以它需要融入這段代碼:(任何建議或答案被大大appeciated :)

+0

你們都是驚人的摘錄!謝謝! – Rabiani 2012-02-08 00:46:14

回答

4

使用regexp.test

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

需要注意的是你故意排除了很多電話號碼,包括國際的人或者替代性的寫作風格的電話號碼,你可以達到的。你應該真的只是測試/^\+?[0-9]+$/

0

您可以使用正則表達式爲:

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

也許是這樣的:

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

有點哈克,但你可以這樣做:

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

哈哈,當然我想出了一個半錯綜複雜的方法,完全忽略了正則表達式......提示:除非由於某種原因害怕正則表達式,否則最好這樣做。 – JKing 2012-02-08 00:47:17

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'是您的變量,保存值。