今天在自己开发时突然要用到js电话号码或手机号码验证,我百度了下,找到了二个比较容易理解并且好的正则验证的代码。
函数名称:IsTelephone
函数功能:固话,手机号码检查函数,合法返回true,反之,返回false
函数参数:obj,待检查的号码
检查规则:
(1)电话号码由数字、"("、")"和"-"构成
(2)电话号码为3到8位
(3)如果电话号码中包含有区号,那么区号为三位或四位
(4)区号用"("、")"或"-"和其他部分隔开
(5)移动电话号码为11或12位,如果为12位,那么第一位为0
(6)11位移动电话号码的第一位和第二位为"13"
(7)12位移动电话号码的第二位和第三位为"13"
********************/
function IsTelephone(obj)// 正则判断
{
var pattern=/(^[0-9]{3,4}-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^([0-9]{3,4})[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/;
if(pattern.test(obj))
{
return true;
}
else
{
return false;
}
}function isphonenumber(str) 非正则判断
{
var i,strlengh,tempchar;
str=CStr(str);
if(str=="") return false;
strlength=str.length;
for(i=0;i<strlength;i++)
{
tempchar=str.substring(i,i+1);
if(!(tempchar==0||tempchar==1||tempchar==2||tempchar==3||tempchar==4||tempchar==5||tempchar==6||tempchar==7||tempchar==8||tempchar==9||tempchar==';-';))
{
alert("电话号码只能输入数字和中划线 ");
return(false);
}
}
return(true);
}
实例二
function Checkreg()
{
//验证电话号码手机号码,包含153,159号段
if (document.form.phone.value=="" && document.form.UserMobile.value==""){
alert("电话号码和手机号码至少选填一个阿!");
document.form.phone.focus();
return false;
}
if (document.form.phone.value != ""){
var phone=document.form.phone.value;
var p1 = /^(([0+]d{2,3}-)?(0d{2,3})-)?(d{7,8})(-(d{3,}))?$/;
var me = false;
if (p1.test(phone))me=true;
if (!me){
document.form.phone.value='';
alert('对不起,您输入的电话号码有错误。区号和电话号码之间请用-分割');
document.form.phone.focus();
return false;
}
}
if (document.form.UserMobile.value != ""){
var mobile=document.form.UserMobile.value;
var reg0 = /^13d{5,9}$/;
var reg1 = /^153d{4,8}$/;
var reg2 = /^159d{4,8}$/;
var reg3 = /^0d{10,11}$/;
var my = false;
if (reg0.test(mobile))my=true;
if (reg1.test(mobile))my=true;
if (reg2.test(mobile))my=true;
if (reg3.test(mobile))my=true;
if (!my){
document.form.UserMobile.value='';
alert('对不起,您输入的手机或小灵通号码有错误。');
document.form.UserMobile.focus();
return false;
}
return true;
}
}
说明
test方法检查在字符串中是否存在一个模式,如果存在则返回 true,否则就返回 false。
正则表达式部分:
d 代表一个数字
{7,8} 代表7-8位数字(表示电话号码)
{3,} 代表分机号码
d{2,3} 代表区号
+]d{2,3} 代表国际区号
^13d{5,9}$/ //130–139。至少5位,最多9位
/^153d{4,8}$/ //联通153。至少4位,最多8位
/^159d{4,8}$/ //移动159。至少4位,最多8位