【JavaScript】常用正则

中国手机号码的校验

严谨

中国手机号(严谨), 根据工信部2019年最新公布的手机号段

/**
* @description 验证手机号码
* @param phone 被验证手机号
* @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 验证手机号码
* @param phone 被验证手机号
* @return Boolean
*/
function isPhone(phone:string) {
  const reg = /^[1][3-9]\d{9}$/;
  return reg.test(phone);
}
最宽松

只要是1开头即可, 如果你的手机号是用来接收短信

/**
* @description 验证手机号码
* @param phone 被验证手机号
* @return Boolean
*/
function isPhone(phone:string) {
  const reg = /^((\+|00)86)?1\d{10}$/;
  return reg.test(phone);
}

国内座机电话校验

/**
* @description 验证手机号码
* @param phone 被验证验证手机号
* @return Boolean
*/
function isTelephone(phone:string) {
  const reg = /^((\+|00)86)?(\d{3}-\d{8}|\d{4}-\d{7})$/;
  return reg.test(phone);
}

身份证/护照校验

二代身份证校验

二代身份证号(18位数字),最后一位是校验位,可能为数字或字符X

/**
* @description 验证身份证
* @param id 被验证身份证
* @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代校验

支持 1 / 2代( 15位 /18位 数字)

/**
* @description 验证身份证
* @param id 被验证身份证
* @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);
}
护照校验(包含香港、澳门)
/**
* @description 验证护照
* @param passport 被验护照
* @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);
}

银行卡号校验

/**
* @description 验证银行卡号
* @param passport 被验证银行卡号
* @return Boolean
*/
function isbankCard(bankcard:string) {
  const reg = /^([1-9]{1})(\d{15}|\d{18})$/;
  return reg.test(bankcard);
}

车牌号校验

新能源
/**
* @description 验证车牌号
* @param passport 被验证车牌号号
* @return Boolean
*/
function isCarNumber(CarNumber:string) {
  const reg = /^\[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领\]\[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挂学警港澳\])$/;
  return reg.test(card);
}
非新能源
/**
* @description 验证车牌号
* @param passport 被验证车牌号号
* @return Boolean
*/
function isCarNumber(CarNumber:string) {
  const reg = /^\[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领\]\[A-HJ-NP-Z\]\[A-HJ-NP-Z0-9\]{4}\[A-HJ-NP-Z0-9挂学警港澳\]$/;
  return reg.test(card);
}
新能源+ 非新能源
/**
* @description 验证车牌号
* @param passport 被验证车牌号号
* @return Boolean
*/
function isCarNumber(CarNumber:string) {
  const reg = /\[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领\]\[A-HJ-NP-Z\]\[A-HJ-NP-Z0-9\]{4,5}\[A-HJ-NP-Z0-9挂学警港澳\]$/;
  return reg.test(card);
}

电子邮箱校验

/**
* @description 验证电子邮箱
* @param mail 被验证邮箱
* @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);
}

邮政号校验

/**
* @description 验证邮政号
* @param postalNumber 被验证邮政号
* @return Boolean
*/
function isPostalNumber(postalNumber:string) {
  const reg = /\d{6}/
  return reg.test(postalNumber);
}

统一社会信用代码校验

/**
* @description 验证统一社会信用代码
* @param socialCode 被验证代码
* @return Boolean
*/
function isSocialCode(socialCode:string) {
  const reg = /[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}/;
  return reg.test(socialCode);
}

网站校验

/**
* @description 验证统一社会信用代码
* @param url 被验证代码
* @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地址校验

ipv4
/**
* @description 验证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 验证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 验证mac地址 (也包含日文和韩文)
* @param color 被验证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);
}

中文字符校验

/**
* @description 验证中文字符 (也包含日文和韩文)
* @param color 被中文字符
* @return Boolean
*/
function isChineseChar(str:string) {
  const reg = /[\u4E00-\u9FA5\uF900-\uFA2D]/;
  return reg.test(str);
}

数字校验证

纯数字
// 纯数字
const isNumber = (num:string) => /^[0-9]*$/.test(num);
// 几位数字
const isNumber = (num:string) => /^d{n}$/.test(num);
// 至少n位的数字
const isNumber = (num:string) => /^d{n}$/.test(num);
// m-n位的数字
const isNumber = (num:string) => /^d{m,n}$/.test(num);
// 零和非零开头的数字
const isNumber = (num:string) => /^(0|[1-9][0-9]*)$/.test(num);
带小数
// 非零开头的最多带两位小数的数字
const isNumber = (num:string) => /^([1-9][0-9]*)+(.[0-9]{1,2})?$/.test(num);
// 带1-2位小数的正数或负数
const isNumber = (num:string) => /^(-)?d+(.d{1,2})?$/.test(num);
// 正数、负数、和小数
const isNumber = (num:string) => /^(-|+)?d+(.d+)?$/.test(num);
// 有两位小数的正实数
const isNumber = (num:string) => /^[0-9]+(.[0-9]{2})?$/.test(num);
// 有1~3位小数的正实数
const isNumber = (num:string) => /^[0-9]+(.[0-9]{1,3})?$/.test(num);
非零的/非负整/非正整/浮点数
// 非零的正整数
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);
// 非零的正整数
const isNumber = (num:string) => /^-[1-9]d*$/.test(num);
// 非负整数
const isNumber = (num:string) => /^d+$/.test(num);
const isNumber = (num:string) => /^[1-9]d*|0$/.test(num);
// 非正整数
const isNumber = (num:string) => /^((-d+)|(0+))$/.test(num);
const isNumber = (num:string) => /^-[1-9]d*|0$/.test(num);
// 非负浮点数
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);
// 非正浮点数
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);
// 正浮点数
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);
// 负浮点数
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);
// 浮点数
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进制颜色校验

/**
* @description 验证16进制颜色
* @param color 被验证代码
* @return Boolean
*/
function is0xColor(color:string) {
  const reg = /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/;
  return reg.test(color);
}

账号校验

QQ号校验
/**
* @description QQ号验证
* @param QQNumber 被验证QQ
* @return Boolean
*/
function isQQNumber(QQNumber:string) {
  const reg = /[1-9]([\d]{4,11})/;
  return reg.test(QQNumber);
}
微信号校验

6至20位,以字母开头,字母,数字,减号,下划线

/**
* @description 微信账号验证
* @param account 被验证微信账号
* @return Boolean
*/
function isWeChatAccount(account:string) {
  const reg = /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/;
  return reg.test(account);
}
真实姓名
/**
* @description 真实姓名验证
* @param account 被真实姓名
* @return Boolean
*/
function isName(name:string) {
  const reg = /^[\u4E00-\u9FA5]{2,10}(·[\u4E00-\u9FA5]{2,10}){0,2}$/;
  return reg.test(name);
}
用户名校验

4到16位(字母,数字,下划线,减号)

/**
* @description 账号验证
* @param account 被验证微信账号
* @return Boolean
*/
function isAccount(account:string) {
  const reg = /^[a-zA-Z0-9_-]{4,16}$/;
  return reg.test(account);
}
密码校验

强:最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符

/**
* @description 密码验证
* @param password 被验证密码验证
* @return Boolean
*/
function isPassword(password:string) {
  const reg = /^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/;
  return reg.test(password);
}

中:字母+数字,字母+特殊字符,数字+特殊字符

/**
* @description 密码验证
* @param password 被验证密码验证
* @return Boolean
*/
function isPassword(password:string) {
  const reg = /^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&*]+$)[a-zA-Z\d!@#$%^&*]+$/;
  return reg.test(password);
}

弱:纯数字,纯字母,纯特殊字符

/**
* @description 密码验证
* @param password 被验证密码验证
* @return Boolean
*/
function isPassword(password:string) {
  const reg = /^(?:\d+|[a-zA-Z]+|[!@#$%^&*]+)$/;
  return reg.test(password);
}

校验版本号

格式必须是x.y.z

/**
* @description 版本号
* @param password 被验证版本号
* @return Boolean
*/
function isVersion(version:string) {
  const reg = /^(?:\d+\.){2}\d+$/;
  return reg.test(password);
}

火车车次(国内)

/**
* @description 版本号
* @param password 被验证版本号
* @return Boolean
*/
function isTrain(train:string) {
  const reg = /^\[GCDZTSPKXLY1-9\]\\d{1,4}$/;
  return reg.test(train);
}

其他

【JavaScript】常用正则
【JavaScript】常用快查 - 客户端
【JavaScript】常用快查 - 断言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值