1. 程式人生 > >常用的一些正則驗證

常用的一些正則驗證

1、驗證身份證號

/**
 * 驗證身份證號
 * @param card
 * @returns {Boolean}
 */
function isCardNo(card) {   // 身份證號碼為15位或者18位,15位時全為數字,18位前17位為數字,最後一位是校驗位,可能為數字或字元X   
	var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;   
	if(reg.test(card) === false)   {     
//		mui.toast("請輸入正確的身份證號");     
		return false;   
	} else{
		return true;   
	}	  
}

2、驗證護照號碼

/**
 * 驗證護照號碼
 * @param code
 * @returns {Boolean}
 */
function ispassport(code){	
//	var reg = /^((1[45]\d{7})|(G\d{8})|(P\d{7})|(S\d{7,8}))?$/;  	
	var reg = /^(\w){1,10}?$/;  	
	if(!code || !reg.test(code)){
		return false;   
	}else{
		return true;   
	}
}

3、驗證駕駛證

/**
 * 驗證駕駛證
 * @param code
 * @returns {Boolean}
 */
function isDriverLicense(code){
	var reg = /^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/;  
	if(!reg.test(code)){
		return false;   
	}else{
		return true;   
	}
}

4、驗證真實姓名

/**
 * 驗證真實姓名
 * @param name
 * @returns {Boolean}
 */
function isName(name){
	var reg = /^[\u4e00-\u9fa5]{2,4}$/;  
	if(!reg.test(name)){
		return false;   
	}else{
		return true;   
	}
}

5、驗證手機號

/**
 * 驗證手機號
 * @param num
 * @returns {Boolean}
 */
function isPhone(phone){	
//	var reg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/;  	
	var reg = /^[1][3,4,5,7,8][0-9]{9}$/;  	
	if((phone.length!=11) || !reg.test(phone)){
		return false;   
	}else{
		return true;   
	}
}

6、驗證郵箱地址

/**
 * 驗證郵箱地址
 * @param email
 * @returns {Boolean}
 */
function isEmail(email){
	var reg = /^(\w-*\.*)[email protected](\w-?)+(\.\w{2,})+$/; 	
	if(!reg.test(email)){
		return false;   
	}else{
		return true;   
	}
}

7、 驗證碼字串是否為純數字

/**
 * 驗證碼字串是否為純數字
 * @param str
 * @returns {Boolean}
 */
function isNum(str){
//	var reg = /^[0-9]*[1-9][0-9]*$/;
	var reg = /(^\d+$)/;
	if (reg.test(str)) {    
		return true;  
	} 
	return false;
}

8、驗證日期格式 yyyy-MM-dd

/**
 * 驗證日期格式 yyyy-MM-dd
 * @param date
 * @returns {Boolean}
 */
function isYMD(date){	
	var reg = /^(\d{4})(\-)([01][0-9])(\-)([0123][0-9])/;	
	if (reg.test(date)) {    
		return true;  
	} 
	return false;
}

9、手機號碼、電話號碼格式驗證

/**
 * 手機號碼、電話號碼格式驗證
 * @param a
 */
function isPhoneTel(a){
	String.prototype.Trim = function() {
	    var m = this.match(/^\s*(\S+(\s+\S+)*)\s*$/);
	    return (m == null) ? "" : m[1];
	}
	String.prototype.isMobile = function() {
	    return (/^(?:13\d|15[89])-?\d{5}(\d{3}|\*{3})$/.test(this.Trim()));
	}
	String.prototype.isTel = function() {
	    //"相容格式: 國家程式碼(2到3位)-區號(2到3位)-電話號碼(7到8位)-分機號(3位)" 
	    //return (/^(([0\+]\d{2,3}-)?(0\d{2,3})-)?(\d{7,8})(-(\d{3,}))?$/.test(this.Trim())); 
	    return (/^(([0\+]\d{2,3}-)?(0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/.test(this.Trim()));
	}
	$(a).off('change');
	$(a).on('change',function(){
		if($(a).val().isMobile() || $(a).val().isTel()){
			$(a).val($(a).val().Trim());
			return true;
		}else{
			alert("請輸入正確的手機號碼或電話號碼\n\n例如:13916752109或0712-3614072");
			$(a).focus();
	        return false;
		}
	});
	
}

下面是一些知識點:

match:唯一引數是一個正則表示式(或通過RegExp()建構函式將其轉換為正則表示式),返回的是一個有匹配結果組成的陣列。如果正則表示式設定了修飾符g,則該方法返回的陣列包含字串中的所有匹配結果。            如果正則表示式沒有設定修飾符g,match()就不會進行全域性檢索,只檢索第一個匹配。            如果match()返回一個數組a,那麼a[0]存放的是完整的匹配,a[1]存放的則是與第一個圓括號括起來相匹配的子串,以此類推,為了和方法replace()保持一致,a[n]存放的是$n的內容。

^:匹配字串的開頭,在多行檢索中,匹配一行的開頭[...]:方括號內的任意字元\:將下一個字元標記為或特殊字元、或原義字元、或向後引用、或八進位制轉義符。例如, 'n' 匹配字元 'n'。'\n' 匹配換行符。序列 '\\' 匹配 "\",而 '\(' 則匹配 "("。?:匹配前一項0次或者1次,也就是說前一項是可選的,等價於{0,1}\d:任何ASCII數字,等價於[0-9]*:匹配前一項0次或者多次,等價於{0,}$:匹配字串的結尾,在多行檢索中,匹配一行的結尾( ):標記一個子表示式的開始和結束位置。子表示式可以獲取供以後使用。要匹配這些字元,請使用 \( 和 \)。         用圓括號將所有選擇項括起來,相鄰的選擇項之間用|分隔。但用圓括號會有一個副作用,使相關的匹配會被快取,此時可用?:放在第一個選項前來消除這種副作用。         其中 ?: 是非捕獲元之一,還有兩個非捕獲元是 ?= 和 ?!,這兩個還有更多的含義,前者為正向預查,在任何開始匹配圓括號內的正則表示式模式的位置來匹配搜尋字串,後者為負向預查,在任何開始不匹配該正則表示式模式的位置來匹配搜尋字串。+:匹配前一項1次或者多次,等價於{1,}