中國(guó)手機(jī)號(hào)碼的校驗(yàn)
嚴(yán)謹(jǐn)
中國(guó)手機(jī)號(hào)(嚴(yán)謹(jǐn)), 根據(jù)工信部2019年最新公布的手機(jī)號(hào)段
/**
* @description 驗(yàn)證手機(jī)號(hào)碼
* @param phone 被驗(yàn)證手機(jī)號(hào)
* @return Boolean
*/
function isPhone(phone:string) {
const reg = /^((\+|00)86)?1((3[\d])|(4[5,6,7,9])|(5[0-3,5-9])|(6[5-7])|(7[0-8])|(8[\d])|(9[1,8,9]))\d{8}$/;
return reg.test(phone);
}
寬松
只要是13、14、15、16、17、18、19開頭即可
/**
* @description 驗(yàn)證手機(jī)號(hào)碼
* @param phone 被驗(yàn)證手機(jī)號(hào)
* @return Boolean
*/
function isPhone(phone:string) {
const reg = /^[1][3-9]\d{9}$/;
return reg.test(phone);
}
最寬松
只要是1開頭即可, 如果你的手機(jī)號(hào)是用來(lái)接收短信
/**
* @description 驗(yàn)證手機(jī)號(hào)碼
* @param phone 被驗(yàn)證手機(jī)號(hào)
* @return Boolean
*/
function isPhone(phone:string) {
const reg = /^((\+|00)86)?1\d{10}$/;
return reg.test(phone);
}
國(guó)內(nèi)座機(jī)電話校驗(yàn)
/**
* @description 驗(yàn)證手機(jī)號(hào)碼
* @param phone 被驗(yàn)證驗(yàn)證手機(jī)號(hào)
* @return Boolean
*/
function isTelephone(phone:string) {
const reg = /^((\+|00)86)?(\d{3}-\d{8}|\d{4}-\d{7})$/;
return reg.test(phone);
}
身份證/護(hù)照校驗(yàn)
二代身份證校驗(yàn)
二代身份證號(hào)(18位數(shù)字),最后一位是校驗(yàn)位,可能為數(shù)字或字符X
/**
* @description 驗(yàn)證身份證
* @param id 被驗(yàn)證身份證
* @return Boolean
*/
function isIdentityCard(id:string) {
const reg = /^\d{6}(18|19|20)\d{2}(0\d|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)$/;
return reg.test(id);
}
支持1/2代校驗(yàn)
支持 1 / 2代( 15位 /18位 數(shù)字)
/**
* @description 驗(yàn)證身份證
* @param id 被驗(yàn)證身份證
* @return Boolean
*/
function isIdentityCard(id:string) {
const reg = /(^\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$)|(^\d{6}(18|19|20)\d{2}(0\d|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)$)/;
return reg.test(id);
}
護(hù)照校驗(yàn)(包含香港、澳門)
/**
* @description 驗(yàn)證護(hù)照
* @param passport 被驗(yàn)護(hù)照
* @return Boolean
*/
function isPassport(passport:string) {
const reg = /(^[EeKkGgDdSsPpHh]\d{8}$)|(^(([Ee][a-fA-F])|([DdSsPp][Ee])|([Kk][Jj])|([Mm][Aa])|(1[45]))\d{7}$)/;
return reg.test(passport);
}
銀行卡號(hào)校驗(yàn)
/**
* @description 驗(yàn)證銀行卡號(hào)
* @param passport 被驗(yàn)證銀行卡號(hào)
* @return Boolean
*/
function isbankCard(bankcard:string) {
const reg = /^([1-9]{1})(\d{15}|\d{18})$/;
return reg.test(bankcard);
}
車牌號(hào)校驗(yàn)
新能源
/**
* @description 驗(yàn)證車牌號(hào)
* @param passport 被驗(yàn)證車牌號(hào)號(hào)
* @return Boolean
*/
function isCarNumber(CarNumber:string) {
const reg = /^\[京津滬渝冀豫云遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陜吉閩貴粵青藏川寧瓊使領(lǐng)\]\[A-HJ-NP-Z\](?:((\\d{5}\[A-HJK\])|(\[A-HJK\]\[A-HJ-NP-Z0-9\]\[0-9\]{4}))|\[A-HJ-NP-Z0-9\]{4}\[A-HJ-NP-Z0-9掛學(xué)警港澳\])$/;
return reg.test(card);
}
非新能源
/**
* @description 驗(yàn)證車牌號(hào)
* @param passport 被驗(yàn)證車牌號(hào)號(hào)
* @return Boolean
*/
function isCarNumber(CarNumber:string) {
const reg = /^\[京津滬渝冀豫云遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陜吉閩貴粵青藏川寧瓊使領(lǐng)\]\[A-HJ-NP-Z\]\[A-HJ-NP-Z0-9\]{4}\[A-HJ-NP-Z0-9掛學(xué)警港澳\]$/;
return reg.test(card);
}
新能源+ 非新能源
/**
* @description 驗(yàn)證車牌號(hào)
* @param passport 被驗(yàn)證車牌號(hào)號(hào)
* @return Boolean
*/
function isCarNumber(CarNumber:string) {
const reg = /\[京津滬渝冀豫云遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陜吉閩貴粵青藏川寧瓊使領(lǐng)\]\[A-HJ-NP-Z\]\[A-HJ-NP-Z0-9\]{4,5}\[A-HJ-NP-Z0-9掛學(xué)警港澳\]$/;
return reg.test(card);
}
電子郵箱校驗(yàn)
/**
* @description 驗(yàn)證電子郵箱
* @param mail 被驗(yàn)證郵箱
* @return Boolean
*/
function isMail(mail:string) {
const reg = /^\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/
return reg.test(mail);
}
郵政號(hào)校驗(yàn)
/**
* @description 驗(yàn)證郵政號(hào)
* @param postalNumber 被驗(yàn)證郵政號(hào)
* @return Boolean
*/
function isPostalNumber(postalNumber:string) {
const reg = /\d{6}/
return reg.test(postalNumber);
}
統(tǒng)一社會(huì)信用代碼校驗(yàn)
/**
* @description 驗(yàn)證統(tǒng)一社會(huì)信用代碼
* @param socialCode 被驗(yàn)證代碼
* @return Boolean
*/
function isSocialCode(socialCode:string) {
const reg = /[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}/;
return reg.test(socialCode);
}
網(wǎng)站校驗(yàn)
/**
* @description 驗(yàn)證統(tǒng)一社會(huì)信用代碼
* @param url 被驗(yàn)證代碼
* @return Boolean
*/
function isUrl(url:string) {
const reg = /^((https?|ftp|wss|udp|tcp):\/\/)?([\da-z.-]+)\.([a-z.]{2,6})(\/\w\.-]*)*\/?/;
return reg.test(url);
}
IP地址校驗(yàn)
ipv4
/**
* @description 驗(yàn)證IP地址
* @param url 被楊政IP地址
* @return Boolean
*/
function isIP(ip:string) {
const reg = /^((\\d|\[1-9\]\\d|1\\d\\d|2\[0-4\]\\d|25\[0-5\])\\.){3}(\\d|\[1-9\]\\d|1\\d\\d|2\[0-4\]\\d|25\[0-5\])(?::(?:\[0-9\]|\[1-9\]\[0-9\]{1,3}|\[1-5\]\[0-9\]{4}|6\[0-4\]\[0-9\]{3}|65\[0-4\]\[0-9\]{2}|655\[0-2\]\[0-9\]|6553\[0-5\]))?$/;
return reg.test(url);
}
ipv6
/**
* @description 驗(yàn)證IP地址
* @param url 被楊政IP地址
* @return Boolean
*/
function isIP(ip:string) {
const reg = /^(?:(?:(?:\[0-9A-Fa-f\]{1,4}:){7}\[0-9A-Fa-f\]{1,4})|((\[0-9A-Fa-f\]{1,4}:){6}:\[0-9A-Fa-f\]{1,4})|((\[0-9A-Fa-f\]{1,4}:){5}:(\[0-9A-Fa-f\]{1,4}:)?\[0-9A-Fa-f\]{1,4})|((\[0-9A-Fa-f\]{1,4}:){4}:(\[0-9A-Fa-f\]{1,4}:){0,2}\[0-9A-Fa-f\]{1,4})|((\[0-9A-Fa-f\]{1,4}:){3}:(\[0-9A-Fa-f\]{1,4}:){0,3}\[0-9A-Fa-f\]{1,4})|((\[0-9A-Fa-f\]{1,4}:){2}:(\[0-9A-Fa-f\]{1,4}:){0,4}\[0-9A-Fa-f\]{1,4})|((\[0-9A-Fa-f\]{1,4}:){6}((\\b((25\[0-5\])|(1\\d{2})|(2\[0-4\]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25\[0-5\])|(1\\d{2})|(2\[0-4\]\\d)|(\\d{1,2}))\\b))|((\[0-9A-Fa-f\]{1,4}:){0,5}:((\\b((25\[0-5\])|(1\\d{2})|(2\[0-4\]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25\[0-5\])|(1\\d{2})|(2\[0-4\]\\d)|(\\d{1,2}))\\b))|(::(\[0-9A-Fa-f\]{1,4}:){0,5}((\\b((25\[0-5\])|(1\\d{2})|(2\[0-4\]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25\[0-5\])|(1\\d{2})|(2\[0-4\]\\d)|(\\d{1,2}))\\b))|(\[0-9A-Fa-f\]{1,4}::(\[0-9A-Fa-f\]{1,4}:){0,5}\[0-9A-Fa-f\]{1,4})|(::(\[0-9A-Fa-f\]{1,4}:){0,6}\[0-9A-Fa-f\]{1,4})|((\[0-9A-Fa-f\]{1,4}:){1,7}:))|\\\[(?:(?:(?:\[0-9A-Fa-f\]{1,4}:){7}\[0-9A-Fa-f\]{1,4})|((\[0-9A-Fa-f\]{1,4}:){6}:\[0-9A-Fa-f\]{1,4})|((\[0-9A-Fa-f\]{1,4}:){5}:(\[0-9A-Fa-f\]{1,4}:)?\[0-9A-Fa-f\]{1,4})|((\[0-9A-Fa-f\]{1,4}:){4}:(\[0-9A-Fa-f\]{1,4}:){0,2}\[0-9A-Fa-f\]{1,4})|((\[0-9A-Fa-f\]{1,4}:){3}:(\[0-9A-Fa-f\]{1,4}:){0,3}\[0-9A-Fa-f\]{1,4})|((\[0-9A-Fa-f\]{1,4}:){2}:(\[0-9A-Fa-f\]{1,4}:){0,4}\[0-9A-Fa-f\]{1,4})|((\[0-9A-Fa-f\]{1,4}:){6}((\\b((25\[0-5\])|(1\\d{2})|(2\[0-4\]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25\[0-5\])|(1\\d{2})|(2\[0-4\]\\d)|(\\d{1,2}))\\b))|((\[0-9A-Fa-f\]{1,4}:){0,5}:((\\b((25\[0-5\])|(1\\d{2})|(2\[0-4\]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25\[0-5\])|(1\\d{2})|(2\[0-4\]\\d)|(\\d{1,2}))\\b))|(::(\[0-9A-Fa-f\]{1,4}:){0,5}((\\b((25\[0-5\])|(1\\d{2})|(2\[0-4\]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25\[0-5\])|(1\\d{2})|(2\[0-4\]\\d)|(\\d{1,2}))\\b))|(\[0-9A-Fa-f\]{1,4}::(\[0-9A-Fa-f\]{1,4}:){0,5}\[0-9A-Fa-f\]{1,4})|(::(\[0-9A-Fa-f\]{1,4}:){0,6}\[0-9A-Fa-f\]{1,4})|((\[0-9A-Fa-f\]{1,4}:){1,7}:))\\\](?::(?:\[0-9\]|\[1-9\]\[0-9\]{1,3}|\[1-5\]\[0-9\]{4}|6\[0-4\]\[0-9\]{3}|65\[0-4\]\[0-9\]{2}|655\[0-2\]\[0-9\]|6553\[0-5\]))?$/i;
return reg.test(url);
}
Mac地址
/**
* @description 驗(yàn)證mac地址 (也包含日文和韓文)
* @param color 被驗(yàn)證mac地址
* @return Boolean
*/
function isMac(str:string) {
const reg = /^(((\[a-f0-9\]{2}:){5})|((\[a-f0-9\]{2}-){5}))\[a-f0-9\]{2}$/i;
return reg.test(str);
}
中文字符校驗(yàn)
/**
* @description 驗(yàn)證中文字符 (也包含日文和韓文)
* @param color 被中文字符
* @return Boolean
*/
function isChineseChar(str:string) {
const reg = /[\u4E00-\u9FA5\uF900-\uFA2D]/;
return reg.test(str);
}
數(shù)字校驗(yàn)證
純數(shù)字
// 純數(shù)字
const isNumber = (num:string) => /^[0-9]*$/.test(num);
// 幾位數(shù)字
const isNumber = (num:string) => /^d{n}$/.test(num);
// 至少n位的數(shù)字
const isNumber = (num:string) => /^d{n}$/.test(num);
// m-n位的數(shù)字
const isNumber = (num:string) => /^d{m,n}$/.test(num);
// 零和非零開頭的數(shù)字
const isNumber = (num:string) => /^(0|[1-9][0-9]*)$/.test(num);
帶小數(shù)
// 非零開頭的最多帶兩位小數(shù)的數(shù)字
const isNumber = (num:string) => /^([1-9][0-9]*)+(.[0-9]{1,2})?$/.test(num);
// 帶1-2位小數(shù)的正數(shù)或負(fù)數(shù)
const isNumber = (num:string) => /^(-)?d+(.d{1,2})?$/.test(num);
// 正數(shù)、負(fù)數(shù)、和小數(shù)
const isNumber = (num:string) => /^(-|+)?d+(.d+)?$/.test(num);
// 有兩位小數(shù)的正實(shí)數(shù)
const isNumber = (num:string) => /^[0-9]+(.[0-9]{2})?$/.test(num);
// 有1~3位小數(shù)的正實(shí)數(shù)
const isNumber = (num:string) => /^[0-9]+(.[0-9]{1,3})?$/.test(num);
非零的/非負(fù)整/非正整/浮點(diǎn)數(shù)
// 非零的正整數(shù)
const isNumber = (num:string) => /^[1-9]d*$/.test(num);
const isNumber = (num:string) => /^([1-9][0-9]*){1,3}$/.test(num);
const isNumber = (num:string) => /^+?[1-9][0-9]*$/.test(num);
// 非零的正整數(shù)
const isNumber = (num:string) => /^-[1-9]d*$/.test(num);
// 非負(fù)整數(shù)
const isNumber = (num:string) => /^d+$/.test(num);
const isNumber = (num:string) => /^[1-9]d*|0$/.test(num);
// 非正整數(shù)
const isNumber = (num:string) => /^((-d+)|(0+))$/.test(num);
const isNumber = (num:string) => /^-[1-9]d*|0$/.test(num);
// 非負(fù)浮點(diǎn)數(shù)
const isNumber = (num:string) => /^d+(.d+)?/.test(num);
const isNumber = (num:string) => /^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0/.test(num);
// 非正浮點(diǎn)數(shù)
const isNumber = (num:string) => /^((-d+(.d+)?)|(0+(.0+)?))$/.test(num);
const isNumber = (num:string) => /^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$/.test(num);
// 正浮點(diǎn)數(shù)
const isNumber = (num:string) => /^[1-9]d*.d*|0.d*[1-9]d*$/.test(num);
const isNumber = (num:string) => /^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$/.test(num);
// 負(fù)浮點(diǎn)數(shù)
const isNumber = (num:string) => /^-([1-9]d*.d*|0.d*[1-9]d*)$/.test(num);
const isNumber = (num:string) => /^(-(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*)))$/.test(num);
// 浮點(diǎn)數(shù)
const isNumber = (num:string) => /^(-?d+)(.d+)?/.test(num);
const isNumber = (num:string) => /^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$/.test(num);
16進(jìn)制顏色校驗(yàn)
/**
* @description 驗(yàn)證16進(jìn)制顏色
* @param color 被驗(yàn)證代碼
* @return Boolean
*/
function is0xColor(color:string) {
const reg = /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/;
return reg.test(color);
}
賬號(hào)校驗(yàn)
QQ號(hào)校驗(yàn)
/**
* @description QQ號(hào)驗(yàn)證
* @param QQNumber 被驗(yàn)證QQ
* @return Boolean
*/
function isQQNumber(QQNumber:string) {
const reg = /[1-9]([\d]{4,11})/;
return reg.test(QQNumber);
}
微信號(hào)校驗(yàn)
6至20位,以字母開頭,字母,數(shù)字,減號(hào),下劃線
/**
* @description 微信賬號(hào)驗(yàn)證
* @param account 被驗(yàn)證微信賬號(hào)
* @return Boolean
*/
function isWeChatAccount(account:string) {
const reg = /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/;
return reg.test(account);
}
真實(shí)姓名
/**
* @description 真實(shí)姓名驗(yàn)證
* @param account 被真實(shí)姓名
* @return Boolean
*/
function isName(name:string) {
const reg = /^[\u4E00-\u9FA5]{2,10}(·[\u4E00-\u9FA5]{2,10}){0,2}$/;
return reg.test(name);
}
用戶名校驗(yàn)
4到16位(字母,數(shù)字,下劃線,減號(hào))
/**
* @description 賬號(hào)驗(yàn)證
* @param account 被驗(yàn)證微信賬號(hào)
* @return Boolean
*/
function isAccount(account:string) {
const reg = /^[a-zA-Z0-9_-]{4,16}$/;
return reg.test(account);
}
密碼校驗(yàn)
強(qiáng):最少6位,包括至少1個(gè)大寫字母,1個(gè)小寫字母,1個(gè)數(shù)字,1個(gè)特殊字符
/**
* @description 密碼驗(yàn)證
* @param password 被驗(yàn)證密碼驗(yàn)證
* @return Boolean
*/
function isPassword(password:string) {
const reg = /^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/;
return reg.test(password);
}
中:字母+數(shù)字,字母+特殊字符,數(shù)字+特殊字符
/**
* @description 密碼驗(yàn)證
* @param password 被驗(yàn)證密碼驗(yàn)證
* @return Boolean
*/
function isPassword(password:string) {
const reg = /^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&*]+$)[a-zA-Z\d!@#$%^&*]+$/;
return reg.test(password);
}
弱:純數(shù)字,純字母,純特殊字符
/**
* @description 密碼驗(yàn)證
* @param password 被驗(yàn)證密碼驗(yàn)證
* @return Boolean
*/
function isPassword(password:string) {
const reg = /^(?:\d+|[a-zA-Z]+|[!@#$%^&*]+)$/;
return reg.test(password);
}
校驗(yàn)版本號(hào)
格式必須是x.y.z
/**
* @description 版本號(hào)
* @param password 被驗(yàn)證版本號(hào)
* @return Boolean
*/
function isVersion(version:string) {
const reg = /^(?:\d+\.){2}\d+$/;
return reg.test(password);
}
火車車次(國(guó)內(nèi))
/**
* @description 版本號(hào)
* @param password 被驗(yàn)證版本號(hào)
* @return Boolean
*/
function isTrain(train:string) {
const reg = /^\[GCDZTSPKXLY1-9\]\\d{1,4}$/;
return reg.test(train);
}