# JavaScript 电话号码的验证

**URL:** <https://www.isharkfly.com/t/javascript/8779>\
**Category:** 前端\
**Created:** [October 31, 2012, 2:56am UTC](https://www.isharkfly.com/t/javascript/8779 "2012-10-31T02:56:36Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![honeymoose](https://www.isharkfly.com/user_avatar/www.isharkfly.com/honeymoose/32/20796_2.png) [@honeymoose](https://www.isharkfly.com/u/honeymoose)\
**Post date:** [October 31, 2012, 2:56am UTC](https://www.isharkfly.com/t/javascript/8779/1 "2012-10-31T02:56:36Z")

</div>

要求：  
(1)电话号码由数字、“(”、")“和”-"构成

(2)电话号码为3到8位

(3)如果电话号码中包含有区号，那么区号为三位或四位

(4)区号用"(“、”)“或”-"和其他部分隔开

(5)移动电话号码为11或12位，如果为12位,那么第一位为0

(6)11位移动电话号码的第一位和第二位为"13"

(7)12位移动电话号码的第二位和第三位为"13"

根据这几条规则，可以与出以下正则表达式：code|(\[1\]{3,8})|(^\([0-9]{3,4}\)[0-9]{3,8})|(^0{0,1}13[0-9]{9})[/code][code]\<script language="java script"\> function PhoneCheck(s) { var str=s; var reg=/(^[0-9]{3,4}\-[0-9]{3,8})|(\[2\]{3,8})|(^\([0-9]{3,4}\)[0-9]{3,8})|(^0{0,1}13[0-9]{9}$)/  
alert(reg.test(str));  
}

具有在输入非数字字符不回显的效果，即对非数字字符的输入不作反应。  
function numbersonly(field,event){  
var key,keychar;  
if(window.event){  
key = window.event.keyCode;  
}  
else if (event){  
key = event.which;  
}  
else{  
return true  
}  
keychar = String.fromCharCode(key);  
if((key == null)||(key == 0)||(key == 8)||(key == 9)||(key == 13)||(key == 27)){  
return true;  
}  
else if((“0123456789.”).indexOf(keychar)\>-1){  
window.status = “”;  
return true;  
}  
else {  
window.status = “Field excepts numbers only”;  
return false;  
}  
}[/code]

* * *

1. 0-9 

2. 0-9
