常用正则表达式汇总

汇总了常用的正则,定期更新。

## URL匹配
匹配http或https开头得url,兼容端口号,来自与Yii2框架:validators/UrlValidator.php
```regex
/^(http|https):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(?::\d{1,5})?(?:$|[?\/#])/i
```

## QQ号码
5到11位数字,不能以0开头,其中11位的是手机号码,手机号码也可以当作QQ号码登录
```regex
/^[1-9]\d{4,10}$/
```

## IP地址
来自于Yii2框架:validators/IpValidator.php

IPV4
```regex
/^(?:(?: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
```regex
/^(([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标签
```regex
/<\/?\w+(\s+\w+=(['"]).*\2)*\s*\/?\s*>/
```

暴力模式
```regex
/<[^>]*>/
```

## 中国邮政编码
6位数字,可以0开头。

其中前两位表示省、市、自治区,第三位代表邮区,第四位代表县、市,最后两位代表投递邮局,最后两位是代表从这个城市哪个投递区投递的,即投递区的位置。
```regex
/^\d{6}$/
```

严格校验
```regex
/^(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位
```regex
/^\w{6,18}$/
```

以数字、字母、下划线组合,不能使用数字开头,长度为6-18位
```regex
/^[a-zA-Z_]\w{5,17}$/
```

微信号:6至20位,以字母开头,由字母、数字、减号、下划线组成
```regex
/^[a-zA-Z][\w-]{5,19}$/
```

## 银行卡号
包含对公账户和对私账号

来源:[微信支付](https://pay.weixin.qq.com/wiki/doc/api/xiaowei.php?chapter=22_1)

```regex
/^[1-9]\d{9,29}$/
```

## 统一社会信用代码
```regex
/^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/
```

## 数字
整数,0到1亿
```regex
/^(0|[1-9]\d{0,9})$/
```


小数,0到1亿,小数位可以省略
```regex
/^(0|[1-9]\d{0,9})(\.\d{1,2})?$/
```

## 手机号码、座机号码
手机号码
```regex
/^1[3-9]\d{9}$/
```

座机号码,区号可选,分机号可选,分隔符支持-/
```regex
/^(\d{3,4}[-\/]?)?\d{7,8}([-\/]\d{2,4})?$/
```

手机或座机

```regex
/^1[3-9]\d{9}$|^(\d{3,4}[-\/]?)?\d{7,8}([-\/]\d{2,4})?$/
```


手机号码严格模式,将每个号段都罗列出来
<https://www.jianshu.com/p/1e8eab706a63>
```regex
/^1(3\d|4[5-9]|5[0-35-9]|6[567]|7[0-8]|8\d|9[0-35-9])\d{8}$/
```

## 身份证号码
18位身份证号码

简单匹配
```regex
/^[1-9]\d{16}[\dxX]$/
```
严格匹配,匹配年、月、日格式
```regex
/^[1-9]\d{5}[12]\d{3}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dxX]$/
```


香港
```regex
/^[a-zA-Z]\d{6}\([\dA]\)$/
```

澳门
```regex
/^[1|5|7]\d{6}[(\d)]{3}$/
```

台湾
```regex
/^[a-zA-Z][0-9]{9}$/
```

## 匹配中文
JavaScript、Java8、Python
```regex
/[\u4e00-\u9fa5]/
```

PHP、Golang
```regex
/[\x{4e00}-\x{9fa5}]/u
```

PHP、Golang,匹配3到5个中文
```regex
/^[\x{4e00}-\x{9fa5}]{3,5}$/u
```

## 匹配区间数字
原理就是将数字分段拆分匹配

匹配1-5
```regex
/^[1-5]$/
```

匹配1-15,拆分为1-9或10-15
```regex
/^(?:[1-9]|1[0-5])$/
```

匹配5-365,拆分为5-9或10-99或100-299或300-359或360-365
```regex
/^(?:[5-9]|[1-9]\d|[1-2]\d{2}|3[0-5]\d|36[0-5])$/
```

## 匹配后缀名
匹配以特定的后缀名结尾
```regex
/\.(jpg|jpeg|png|gif|webp)$/
```

## 密码强度
密码可以是任意字符,但必须包含字母和数字组合,长度为8-32位
```regex
/^(?=.*[0-9].*)(?=.*[a-zA-Z].*).{8,32}$/
```

密码可以是任意字符,但必须包含大写字母、小写字母和数字组合,长度为8-32位
```regex
/^(?=.*[0-9].*)(?=.*[a-z].*)(?=.*[A-Z].*).{5,32}$/
```

## 火车车次
```regex
/^[GCDZTSPKXLY1-9]\d{1,4}$/
```

## 护照
包含香港、澳门
```regex
/(^[EeKkGgDdSsPpHh]\d{8}$)|(^(([Ee][a-fA-F])|([DdSsPp][Ee])|([Kk][Jj])|([Mm][Aa])|(1[45]))\d{7}$)/
```

## 电子邮箱
简单匹配
```regex
/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
```

标准匹配
<http://www.regular-expressions.info/email.html>
```regex
/^[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
```regex
/^[a-zA-Z0-9《》()()\-、&\u4e00-\u9fa5]{2,30}$/
```

PHP、Golang
```regex
/^[a-zA-Z0-9《》()()\-、&\x{4e00}-\x{9fa5}]{2,30}$/
```

注意:中文匹配部分需要根据对应语言的写法

单位名称示例:
* 华为技术有限公司
* SMC(中国)有限公司
* TCL华星光电技术有限公司
* 深圳创维-RGB电子有限公司
* 中国兵器工业第二〇五研究所

## 车牌号
新能源
```regex
/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][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挂学警港澳])$/
```

非新能源
```regex
/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]$/
```

新能源+非新能源
```regex
/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]$/
```

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340