正则表达式

/*  验证是否电话号码            */
/*  验证是否邮箱                */
/*  验证是否正整数              */
/*  验证身份证号码              */
/*  获取身份证号码中的生日      */
/*  判断是否是日期型            */

 

//验证电话号码,如果正确返回True,否则返回False
function checkCellPhone(obj)
{
    //中国手机号码
    var phoneReg = /^0?(1315[012356789]|18[0236789]|14[57])[0-9]{8}$/;
    var re0=/^(13[0-9]|15[0-9]|18[0-9]|14[57])(\d){8}$/;
    if(re0.test(obj)){return true;}
    else{return false;}
}

//验证电话号码
function checkPhone(obj)
{
    //中国手机号码
    var re0=/^(13[0-9]|15[0-9]|18[0-9]|14[57])(\d){8}$/;
    //检测用户输入的是否是有效的电话号码 区号可以为3位,也可以为4位,号码可以为7位,也可以为8位
    var re2=/^(\d){3,4}-(\d){7,8}$/;
    //"国际号码兼容格式: 国家代码(2到3位)-区号(2到3位)-电话号码(7到8位)-分机号(3位)"
    var re3=/^(\d){2,3}-(\d){2,3}-(\d){7,8}-(\d){3}$/;
    //没有区号
    var re4=/^(\d){7,8}$/;
    if(re0.test(obj)){return true;}
    else if(re2.test(obj)){return true;}
    else if(re3.test(obj)){return true;}
    else if(re4.test(obj)){return true;}
    else{return false;}
}

//验证邮箱
function checkEmail(obj)
{
    var re=/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
   
    if(!re.test(obj))
    {
        return true;
    }
    else{return false;}
}

 

//检测用户输入是否是正整数形式
function checkNumber(obj)
{
      var re=/^[0-9]*[0-9][0-9]*$/;   
      if(re.test(obj))
      {
        if(obj>=0)
        {
            return true;
        }
        else
        {
            return false;
        }
      }
      else{return false;}
}
/**判断是否是汉字**/
function checkChinese(obj){
     var reg=/^[\u4E00-\u9FA5]+$/;
     if(!reg.test(obj)){
        return false;
     }else{
        return true;
     }
}

//验证身份证号码
function isIdCardNo(num)  
{    
    num = num.toUpperCase();   
    //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。
    if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num)))
    {return false;}
    //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。  
    //下面分别分析出生日期和校验位
    var len, re;
    len = num.length;  
    if (len == 15)  
    {  
        re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);  
        var arrSplit = num.match(re);  
         
        //检查生日日期是否正确  
        var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]);
        var bGoodDay;  
        bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));  
        if (!bGoodDay)  
        {return false;}
        else  
        {  
            //将15位身份证转成18位  
            //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。  
            var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);  
            var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');  
            var nTemp = 0, i;    
            num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6);  
            for(i = 0; i < 17; i ++)  
            {  
                nTemp += num.substr(i, 1) * arrInt[i];  
            }  
            num += arrCh[nTemp % 11];  
        }
    } 
    re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);  
    var arrSplit = num.match(re); 
    //检查生日日期是否正确  
    var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);
    var bGoodDay;  
    bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));  
    if (!bGoodDay)  
    {return false;}
    else  
    {  
        //检验18位身份证的校验码是否正确。  
        //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。  
        var valnum;  
        var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);  
        var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');  
        var nTemp = 0, i;  
        for(i = 0; i < 17; i ++)  
        {  
            nTemp += num.substr(i, 1) * arrInt[i];  
        }  
        valnum = arrCh[nTemp % 11];  
        if (valnum != num.substr(17, 1))  
        {return false;}
    }
    return cidInfo(num);
}      
     

var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江 ",
31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",
41:"河南",42:"湖北 ",43:"湖南",44:"广东",45:"广西",46:"海南",
50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏 ",
61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外 "} 
     
function cidInfo(sId){ 
    var iSum=0 
    var info="" 
    if(/^d{17}(d|x)$/i.test(sId))
    {return false; }
    sId=sId.replace(/x$/i,"a"); 
    if(aCity[parseInt(sId.substr(0,2))]==null)
    {return false;}
    sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2)); 
    var d=new Date(sBirthday.replace(/-/g,"/"));
    if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))
    {return false;} 
    for(var i = 17;i>=0;i --) {iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11);}
    if(iSum%11!=1){return false;}
    return true;
    //return aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女") 
}

//获取身份证号码中的生日
function birthday(num){
    var re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);
    //检查生日日期是否正确   
    var arrSplit = num.match(re);
    var dtmBirth = new Date(arrSplit[2] + "-" + arrSplit[3] + "-" + arrSplit[4]);
    var time = arrSplit[2] + "-" + arrSplit[3] + "-" + arrSplit[4];
    return time;
}

//判断是否是日期型
function checkIsValidDate(dateStr)
{
    var matchArray = dateStr.match(/^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$/);
    if (matchArray == null)
    { return false; }
    else
    { return true;}
}

posted @ 2013-07-01 17:27  萧飒昵称  阅读(331)  评论(0编辑  收藏  举报