汇总了常用的正则,定期更新。
URL匹配
匹配http或https开头得url,兼容端口号,来自与Yii2框架:validators/UrlValidator.php
/^(http|https):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(?::\d{1,5})?(?:$|[?\/#])/i
QQ号码
5到11位数字,不能以0开头,其中11位的是手机号码,手机号码也可以当作QQ号码登录
/^[1-9]\d{4,10}$/
IP地址
来自于Yii2框架:validators/IpValidator.php
IPV4
/^(?:(?:2(?:[0-4][0-9]|5[0-5])|[0-1]?[0-9]?[0-9])\.){3}(?:(?:2([0-4][0-9]|5[0-5])|[0-1]?[0-9]?[0-9]))$/
IPV6
/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/
HTML标签
匹配单标签、双标签的开始标签和结束标签,可用于清除HTML标签
/<\/?\w+(\s+\w+=(['"]).*\2)*\s*\/?\s*>/
暴力模式
/<[^>]*>/
中国邮政编码
6位数字,可以0开头。
其中前两位表示省、市、自治区,第三位代表邮区,第四位代表县、市,最后两位代表投递邮局,最后两位是代表从这个城市哪个投递区投递的,即投递区的位置。
/^\d{6}$/
严格校验
/^(0[1-7]|1[0-356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[0-5]|8[013-6])\d{4}$/
账号
以数字、字母、下划线组合,长度为6-18位
/^\w{6,18}$/
以数字、字母、下划线组合,不能使用数字开头,长度为6-18位
/^[a-zA-Z_]\w{5,17}$/
微信号:6至20位,以字母开头,由字母、数字、减号、下划线组成
/^[a-zA-Z][\w-]{5,19}$/
银行卡号
包含对公账户和对私账号
来源:微信支付
/^[1-9]\d{9,29}$/
统一社会信用代码
/^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/
数字
整数,0到1亿
/^(0|[1-9]\d{0,9})$/
小数,0到1亿,小数位可以省略
/^(0|[1-9]\d{0,9})(\.\d{1,2})?$/
手机号码、座机号码
手机号码
/^1[3-9]\d{9}$/
座机号码,区号可选,分机号可选,分隔符支持-/
/^(\d{3,4}[-\/]?)?\d{7,8}([-\/]\d{2,4})?$/
手机或座机
/^1[3-9]\d{9}$|^(\d{3,4}[-\/]?)?\d{7,8}([-\/]\d{2,4})?$/
手机号码严格模式,将每个号段都罗列出来
https://www.jianshu.com/p/1e8...
/^1(3\d|4[5-9]|5[0-35-9]|6[567]|7[0-8]|8\d|9[0-35-9])\d{8}$/
身份证号码
18位身份证号码
简单匹配
/^[1-9]\d{16}[\dxX]$/
严格匹配,匹配年、月、日格式
/^[1-9]\d{5}[12]\d{3}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dxX]$/
香港
/^[a-zA-Z]\d{6}\([\dA]\)$/
澳门
/^[1|5|7]\d{6}[(\d)]{3}$/
台湾
/^[a-zA-Z][0-9]{9}$/
匹配中文
JavaScript、Java8、Python
/[\u4e00-\u9fa5]/
PHP、Golang
/[\x{4e00}-\x{9fa5}]/u
PHP、Golang,匹配3到5个中文
/^[\x{4e00}-\x{9fa5}]{3,5}$/u
匹配区间数字
原理就是将数字分段拆分匹配
匹配1-5
/^[1-5]$/
匹配1-15,拆分为1-9或10-15
/^(?:[1-9]|1[0-5])$/
匹配5-365,拆分为5-9或10-99或100-299或300-359或360-365
/^(?:[5-9]|[1-9]\d|[1-2]\d{2}|3[0-5]\d|36[0-5])$/
匹配后缀名
匹配以特定的后缀名结尾
/\.(jpg|jpeg|png|gif|webp)$/
密码强度
密码可以是任意字符,但必须包含字母和数字组合,长度为8-32位
/^(?=.*[0-9].*)(?=.*[a-zA-Z].*).{8,32}$/
密码可以是任意字符,但必须包含大写字母、小写字母和数字组合,长度为8-32位
/^(?=.*[0-9].*)(?=.*[a-z].*)(?=.*[A-Z].*).{5,32}$/
火车车次
/^[GCDZTSPKXLY1-9]\d{1,4}$/
护照
包含香港、澳门
/(^[EeKkGgDdSsPpHh]\d{8}$)|(^(([Ee][a-fA-F])|([DdSsPp][Ee])|([Kk][Jj])|([Mm][Aa])|(1[45]))\d{7}$)/
电子邮箱
简单匹配
/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
标准匹配
http://www.regular-expression...
/^[a-zA-Z0-9!#$%&\'*+\/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&\'*+\/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$/
单位名称
格式:长度在2-30之间,只能包含中英文、数字、书名号、&、-、顿号、括号
JavaScript、Java8、Python
/^[a-zA-Z0-9《》()()\-、&\u4e00-\u9fa5]{2,30}$/
PHP、Golang
/^[a-zA-Z0-9《》()()\-、&\x{4e00}-\x{9fa5}]{2,30}$/
注意:中文匹配部分需要根据对应语言的写法
单位名称示例:
- 华为技术有限公司
- SMC(中国)有限公司
- TCL华星光电技术有限公司
- 深圳创维-RGB电子有限公司
- 中国兵器工业第二〇五研究所
车牌号
新能源
/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][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挂学警港澳])$/
非新能源
/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]$/
新能源+非新能源
/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]$/