常用的正则匹配规则

常用的正则匹配规则


一.匹配身份证
'(^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$)'

正则表达式解释
1.^[1-9]\d{5}:匹配前6位数字,表示地区代码,第一位不能为0。
2.\d{2}:匹配年份,范围为1900-1999。
3.((0[1-9])|(10|11|12)):匹配月份,范围为01-12。
4.(([0-2][1-9])|10|20|30|31):匹配日期,范围为01-31。
5.\d{3}$:匹配顺序码,3位数字。

示例
以下是一些匹配和不匹配的例子:
匹配:
123456199001011234(18位)
12345619900101123(15位)
123456200002281234(18位)
12345619900228123(15位)
不匹配:
123456199013011234(月份13不合法)
123456199002301234(日期30不合法)
12345619900228123X(15位身份证号码不允许X)

二.匹配邮箱
'^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$'

正则表达式解释
1.^:表示字符串的开始。
2.[a-zA-Z0-9_-]+:匹配用户名部分,允许的字符包括字母(大小写)、数字、下划线(_)和破折号(-)。+ 表示至少一个这样的字符。
3.@:匹配 @ 符号。
4.[a-zA-Z0-9_-]+:匹配域名的第一部分,允许的字符包括字母(大小写)、数字、下划线(_)和破折号(-)。+ 表示至少一个这样的字符。
5.(\.[a-zA-Z0-9_-]+)+:匹配域名的后续部分,包括点(.)和后续的字符。(\.[a-zA-Z0-9_-]+)+ 表示至少有一个点和后续的字符部分。+ 表示可以有多个这样的部分。
6.$:表示字符串的结束。

示例
以下是一些匹配和不匹配的例子:
匹配:
example@example.com
user.name123@domain.com
user_name-123@sub.domain.com
user@domain.co.uk
不匹配:
user@domain(缺少顶级域名)
user@domain..com(连续的点)
user@domain.c(顶级域名太短)
user@-domain.com(域名以破折号开头)
user@domain-.com(域名以破折号结尾)


三.匹配IPv4地址
'^(?:(?:1[0-9][0-9].)|(?:2[0-4][0-9].)|(?:25[0-5].)|(?:[1-9][0-9].)|(?:[0-9].)){3}(?:(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5])|(?:[1-9][0-9])|(?:[0-9]))$'

正则表达式解释
1.^:表示字符串的开始。
2.(?:(?:...)):非捕获组,用于分组但不捕获匹配的文本。
3.(?:1[0-9][0-9].):匹配100到199之间的数字,后跟一个点。
4.(?:2[0-4][0-9].):匹配200到249之间的数字,后跟一个点。
5.(?:25[0-5].):匹配250到255之间的数字,后跟一个点。
6.(?:[1-9][0-9].):匹配10到99之间的数字,后跟一个点。
7.(?:[0-9].):匹配0到9之间的数字,后跟一个点。
8.{3}:表示前面的非捕获组重复3次,匹配前三个部分的数字和点。
9.(?:(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5])|(?:[1-9][0-9])|(?:[0-9])):匹配最后一个部分的数字,范围为0到255。
10.$:表示字符串的结束

示例
以下是一些匹配和不匹配的例子:
匹配:
192.168.1.1
10.0.0.1
255.255.255.255
1.2.3.4
不匹配:
256.0.0.1(256不在0-255范围内)
192.168.1(缺少一个部分)
192.168.1.1.1(多了一个部分)
192.168.1.256(256不在0-255范围内)

四.匹配手机号
'^([1][3,4,5,6,7,8,9]\d{9})$'

正则表达式解释
1.^:表示字符串的开始。
2.([1][3,4,5,6,7,8,9]\d{9}):匹配手机号码。
  [1]:匹配第一位数字,必须是1。
  [3,4,5,6,7,8,9]:匹配第二位数字,可以是3、4、5、6、7、8或9。
  \d{9}:匹配接下来的9位数字,\d 表示一个数字,{9} 表示重复9次。
3.$:表示字符串的结束

示例
以下是一些匹配和不匹配的例子:
匹配:
13812345678
15912345678
17612345678
18512345678
不匹配:
12812345678(第二位数字不合法)
1381234567(少了一位数字)
138123456789(多了一位数字)
23812345678(第一位数字不合法)

五。匹配邮编地址
'^[1-9]\d{5}$'

正则表达式解释
1.^[1-9]\d{5}$:匹配邮编地址。
  ^:表示字符串的开始。
  [1-9]:匹配第一位数字,必须是1到9之间的数字。
  \d{5}:匹配接下来的5位数字,\d 表示一个数字,{5} 表示重复5次。
2.$:表示字符串的结束

示例
以下是一些匹配和不匹配的例子:
匹配:
100000
110000
120000
130000
140000
不匹配:
10000(少一位数字)
1000000(多一位数字)
10000A(最后一位不是数字)

六.匹配日期
'^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$'

正则表达式解释
1.^:表示字符串的开始。
2.[1-9]\d{3}:匹配年份部分,范围为1000到9999。
  [1-9]:第一位数字不能为0,范围为1到9。
  \d{3}:匹配接下来的3位数字,\d 表示一个数字,{3} 表示重复3次。
3.-:匹配年份和月份之间的分隔符。
4.(0[1-9]|1[0-2]):匹配月份部分,范围为01到12。
  0[1-9]:匹配01到09。
  1[0-2]:匹配10到12。
5.-:匹配月份和日期之间的分隔符。
6.(0[1-9]|[1-2][0-9]|3[0-1]):匹配日期部分,范围为01到31。
   0[1-9]:匹配01到09。
   [1-2][0-9]:匹配10到29。
   3[0-1]:匹配30到31。
7.$:表示字符串的结束。

示例
以下是一些匹配和不匹配的例子:
匹配:
2023-01-01
2023-12-31
1000-01-01
9999-12-31
不匹配:
2023-00-01(月份00不合法)
2023-13-01(月份13不合法)
2023-01-00(日期00不合法)
2023-01-32(日期32不合法)
2023-1-1(月份和日期不足两位)
2023-01-1(日期不足两位)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值