1. 程式人生 > >js驗證:正則表示式

js驗證:正則表示式

$.extend($.fn.validatebox.defaults.rules,{    //驗證中文  
CHS:{
	validator:function(value){
		return /^[\u0391-\uFFE5]+$/.test(value);
	},
	message:"只能輸入漢字."
},
//字元驗證
stringCheck:{
	validator:function(value){
		return /^[\u0391-\uFFE5\w]+$/.test(value);
	},
	message:"只能包括中文字、英文字母、數字和下劃線."
},
//驗證中文,英文,數字
stringCheckSub:{
	validator:function(value){
		return /^[a-zA-Z0-9\u4E00-\u9FA5]+$/.test(value);
	},
	message:"只能包括中文字、英文字母、數字."
},
englishCheckSub:{
	validator:function(value){
		return /^[a-zA-Z0-9]+$/.test(value);
	},
	message:"只能包括英文字母、數字."
},
numberCheckSub:{
	validator:function(value){
		return /^[0-9]+$/.test(value);
	},
	message:"只能輸入數字."
},
//手機號碼驗證
mobile:{
	validator:function(value){
		var reg = /^(((13[0-9]{1})|(14[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/;
		return value.length == 11 && reg.test(value);
	},
	message:"請正確填寫您的手機號碼."
},
//電話號碼驗證
telephone:{
	validator:function(value){
		//電話號碼格式010-12345678
		var reg = /^\d{3,4}?\d{7,8}$/;
		 
		return reg.test(value);
	},
	message:"請正確填寫您的電話號碼."
},
//聯絡電話(手機/電話皆可)驗證 
mobileTelephone:{
	validator:function(value){
		var cmccMobile = /^(((13[0-9]{1})|(14[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/;
		var tel = /^\d{3,4}?\d{7,8}$/;
		return tel.test(value) || (value.length == 11 && cmccMobile.test(value));
	},
	message:"請正確填寫您的聯絡電話."
},
//驗證國內郵編驗證
zipCode:{
	validator:function(value){
		var reg = /^[1-9]\d{5}$/;
		return reg.test(value);
	},
	message:"郵編必須長短0開端的6位數字."
},
//身份證號碼驗證 
idCardNo:{
	validator:function(value){
		return isIdCardNo(value); 
	},
	message:"請正確輸入您的身份證號碼."
},
 
//驗證兩個不同時為空
//可以自定義提示資訊
 
 allNotNull:{
validator:function(toValue,fromValue){
	if(fromValue ==null || fromValue.length ==0 || fromValue[0]==null || fromValue[0]==""){
		if(toValue ==null || toValue.length ==0 || toValue[0]==null || toValue[0]==""){
	$.fn.validatebox.defaults.rules.compareDigit.message="中,英.文名不可同時為空 ";
		return false;
	}else{
		return true;
	}
	}else
		{return true;}
	},
		message:""
},
 
 
 
 
//數字驗證大小,結束值應該大於開始值
//可以自定義提示資訊
compareDigit:{
validator:function(toValue,fromValue){
	if(fromValue ==null || fromValue.length ==0 || fromValue[0]==null || fromValue[0]==""){
		return true;
	}
	if(parseFloat(toValue) > parseFloat(fromValue[0])){
		return true;
	}else{
	if(fromValue.length >= 2){
		$.fn.validatebox.defaults.rules.compareDigit.message = fromValue[1];
	}else{
		$.fn.validatebox.defaults.rules.compareDigit.message = '結束值應該大於開始值';
	}
		return false
	}
	},
	message:""
},
//日期、時間驗證大小,結束日期應該大於開始日期
//可以自定義提示資訊
compareDate:{
validator:function(toDate,param){
	if(param ==null || param.length ==0 || param[0]==null || param[0]==""){
		return true;
	}
	if(toDate > param[0]){
		return true;
	}else{
	if(param.length >= 2){
		$.fn.validatebox.defaults.rules.compareDate.message = param[1];
	}
	else {
		$.fn.validatebox.defaults.rules.compareDate.message = '結束日期應該大於開始日期';
	}
		return false
	}
	},
	message:''
}
//到伺服器端驗證
/*remote:{
	validator:function(value,param){
		var params = {};
			params[param[1]] = value;
			$.post(param[0],params,function(data){
		if(!data.msg){
			$.fn.validatebox.defaults.rules.account.message = param[2];
		} 
			return data.msg;
		});
		},
		message:""
		}*/
	}
)
 
 
//--身份證號碼驗證-支援新的帶x身份證
function isIdCardNo(num) 
{
    var factorArr = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
    var error;
    var varArray = new Array();
    var intValue;
    var lngProduct = 0;
    var intCheckDigit;
    var intStrLen = num.length;
    var idNumber = num;    
    // initialize
    if ((intStrLen != 15) && (intStrLen != 18)) {
        //error = "輸入身份證號碼長度不對!";
        //alert(error);
        //frmAddUser.txtIDCard.focus();
        return false;
    }    
    // check and set value
    for(i=0;i<intStrLen;i++) {
        varArray[i] = idNumber.charAt(i);
        if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17)) {
            //error = "錯誤的身份證號碼!.";
            //alert(error);
            //frmAddUser.txtIDCard.focus();
            return false;
        } else if (i < 17) {
            varArray[i] = varArray[i]*factorArr[i];
        }
    }
    if (intStrLen == 18) {
        //check date
        var date8 = idNumber.substring(6,14);
        if (isDate8(date8) == false) {
            //error = "身份證中日期資訊不正確!.";
            //alert(error);
            return false;
        }        
        // calculate the sum of the products
        for(i=0;i<17;i++) {
            lngProduct = lngProduct + varArray[i];
        }        
        // calculate the check digit
        intCheckDigit = 12 - lngProduct % 11;
        switch (intCheckDigit) {
            case 10:
                intCheckDigit = 'X';
                break;
            case 11:
                intCheckDigit = 0;
                break;
            case 12:
                intCheckDigit = 1;
                break;
        }        
        // check last digit
        if (varArray[17].toUpperCase() != intCheckDigit) {
            //error = "身份證效驗位錯誤!...正確為: " + intCheckDigit + ".";
            //alert(error);
            return false;
        }
    } 
    else{        //length is 15
        //check date
        var date6 = idNumber.substring(6,12);
        if (isDate6(date6) == false) {
            //alert("身份證日期資訊有誤!.");
            return false;
        }
    }
    //alert ("Correct.");
    return true;
}
 
 
/**
 * 判斷是否為“YYYYMM”式的時期
 *
 */
function isDate6(sDate) {
   if(!/^[0-9]{6}$/.test(sDate)) {
      return false;
   }
   var year, month, day;
   year = sDate.substring(0, 4);
   month = sDate.substring(4, 6);
   if (year < 1700 || year > 2500) return false
   if (month < 1 || month > 12) return false
   return true
}
/**
 * 判斷是否為“YYYYMMDD”式的時期
 *
 */
function isDate8(sDate) {
   if(!/^[0-9]{8}$/.test(sDate)) {
      return false;
   }
   var year, month, day;
   year = sDate.substring(0, 4);
   month = sDate.substring(4, 6);
   day = sDate.substring(6, 8);
   var iaMonthDays = [31,28,31,30,31,30,31,31,30,31,30,31]
   if (year < 1700 || year > 2500) return false
   if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) iaMonthDays[1]=29;
   if (month < 1 || month > 12) return false
   if (day < 1 || day > iaMonthDays[month - 1]) return false
   return true
}
拓展2
$.extend($.fn.validatebox.defaults.rules,{
   idcard : {// 驗證身份證 
       validator : function(value) { 
           return/^\d{15}(\d{2}[A-Za-z0-9])?$/i.test(value); 
       }, 
       message : '身份證號碼格式不正確' 
   },
     minLength: {
       validator: function(value, param){
           return value.length >= param[0];
       },
       message: '請輸入至少(2)個字元.'
   },
   length:{validator:function(value,param){ 
       var len=$.trim(value).length; 
           return len>=param[0]&&len<=param[1]; 
       }, 
           message:"輸入內容長度必須介於{0}和{1}之間." 
       }, 
   phone : {// 驗證電話號碼 
       validator : function(value) { 
           return/^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/i.test(value); 
       }, 
       message : '格式不正確,請使用下面格式:020-88888888' 
   }, 
   mobile : {// 驗證手機號碼 
       validator : function(value) { 
           return/^(13|15|18)\d{9}$/i.test(value); 
       }, 
       message : '手機號碼格式不正確' 
}, 
phoneNum: {// 驗證手機號碼+固定電話 
       validator : function(value) { 
           return /^(((((010)|(02\d)))[2-8]\d{7})|(0[3-9]\d{2}[2-8]\d{6,7})|(0?(?:147|1[358]\d)\d{8}))$/i.test(value); 
       }, 
       message : '手機號碼格式不正確' 
}, 
 
   intOrFloat : {// 驗證整數或小數 
       validator : function(value) { 
           return /^\d+(\.\d+)?$/i.test(value); 
       }, 
       message : '請輸入數字,並確保格式正確' 
   }, 
   currency : {// 驗證貨幣 
       validator : function(value) { 
           return /^\d+(\.\d+)?$/i.test(value); 
       }, 
       message : '貨幣格式不正確' 
   }, 
   qq : {// 驗證QQ,從10000開始 
       validator : function(value) { 
           return /^[1-9]\d{4,9}$/i.test(value); 
       }, 
       message : 'QQ號碼格式不正確' 
   }, 
   integer : {// 驗證整數 
       validator : function(value) { 
           return /^[+]?[1-9]+\d*$/i.test(value); 
       }, 
       message : '請輸入整數' 
   }, 
   age : {// 驗證年齡
       validator : function(value) { 
           return /^(?:[1-9][0-9]?|1[01][0-9]|120)$/i.test(value); 
       }, 
       message : '年齡必須是0到120之間的整數' 
   }, 
   
   chinese : {// 驗證中文 
       validator : function(value) { 
           return /^[\Α-\¥]+$/i.test(value); 
       }, 
       message : '請輸入中文' 
   }, 
   english : {// 驗證英語 
       validator : function(value) { 
           return /^[A-Za-z]+$/i.test(value); 
       }, 
       message : '請輸入英文' 
   }, 
   unnormal : {// 驗證是否包含空格和非法字元 
       validator : function(value) { 
           return /.+/i.test(value); 
       }, 
       message : '輸入值不能為空和包含其他非法字元' 
   }, 
   username : {// 驗證使用者名稱 
       validator : function(value) { 
           return/^[a-zA-Z][a-zA-Z0-9_]{5,15}$/i.test(value); 
       }, 
       message : '使用者名稱不合法(字母開頭,允許6-16位元組,允許字母數字下劃線)' 
   }, 
   faxno : {// 驗證傳真 
       validator : function(value) { 
//           return /^[+]{0,1}(\d){1,3}[]?([-]?((\d)|[ ]){1,12})+$/i.test(value); 
           return /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/i.test(value); 
       }, 
       message : '傳真號碼不正確' 
   }, 
   zip : {// 驗證郵政編碼 
       validator : function(value) { 
           return /^[1-9]\d{5}$/i.test(value); 
       }, 
       message : '郵政編碼格式不正確' 
   }, 
   ip : {// 驗證IP地址 
       validator : function(value) { 
           return /d+.d+.d+.d+/i.test(value); 
       }, 
       message : 'IP地址格式不正確' 
   }, 
   name : {// 驗證姓名,可以是中文或英文 
           validator : function(value) { 
               return /^[\Α-\¥]+$/i.test(value)|/^\w+[\w\s]+\w+$/i.test(value); 
           }, 
           message : '請輸入姓名' 
   },
   date : {// 驗證姓名,可以是中文或英文 
       validator : function(value) { 
        //格式yyyy-MM-dd或yyyy-M-d
           return/^(?:(?!0000)[0-9]{4}([-]?)(?:(?:0?[1-9]|1[0-2])\1(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])\1(?:29|30)|(?:0?[13578]|1[02])\1(?:31))|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)([-]?)0?2\2(?:29))$/i.test(value); 
       },
       message : '清輸入合適的日期格式'
   },
   msn:{ 
       validator : function(value){ 
       return/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(value); 
   }, 
   message : '請輸入有效的msn賬號(例:
[email protected]
(msn/live).com)' }, same:{ validator : function(value, param){ if($("#"+param[0]).val() !="" && value != ""){ return$("#"+param[0]).val() == value; }else{ return true; } }, message : '兩次輸入的密碼不一致!' } }); 應用例項: <td align="right"><label style="color: red">*</label>行動電話:</td> <td colspan="2"> <input id="mobile" type="text" class="easyui-validatebox" validType="mobile" name="mobile" required="true" maxlength="13" style="width:150px"></input> </td>