常用的一些正則驗證
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,}