0%

博弈论(一)–yale

正则表达式(二)–常用正则表达式

[TOC]

to完结正则表达式
承接上一篇正则的blog,这里给一点点练习讲解和常用正则

环境变更

因为写上一篇博客的时候我还在window环境下,因为一直很焦虑双系统用哪个的问题,我一举把win10和ubuntu16都删掉了,装了个ubuntu18…所以验证的平台去到了:
regex

讲解练习

电话号码的正则

电话号码由数字和“-”组成

  1. 如果包含区号,那么区号为三位或四位,首位是0
  2. 区号用“-”和其他数字分割
  3. 除了区号,电话号码为7到8位
  4. 手机号码为11位
  5. 11位手机号码的前2位为“13”,“14”,“15”,“17”,“18”

小答案:
1.固话:
电话
2.手机号码:
手机

答案:

1
2
3
4
5
6
7
8
9
10

![all](https://hwb-pic.oss-cn-shenzhen.aliyuncs.com/img/5b939fefb8e20.jpg)

### 身份证号码的正则
1. 长度:15位或者18位
2. 如果是15位,则都是数字
3. 如果是18位,最后一位可能为数字或字母X

这题简单:
>答案:```(^\d{15}$)|(^\d{17}(\d|X|x)$)

b

电子邮箱的正则

  1. 邮箱格式:用户名@网址.域名
  2. 用户名:字母、数字、下划线组成
  3. 网址:字母、数字
  4. 域名:2-4位字母组成,1-2个域名
  5. 不区分大小写

小答案
先说明的是,这个东西为了严谨,有人写过一个几百行的正则….我这里就随意写一个符合规则的罢了
也是分成三部分考虑:(用户名)@(网址).(域名)这样子看就不难写了

答案:

1
2
3
4
5
6
7
8
9
10
11
12
13

![an_3](https://hwb-pic.oss-cn-shenzhen.aliyuncs.com/img/5b93a4e838fb2.jpg)

后两题太简单了,觉得没必要讲了.

## 常用正则表达式
放一些有特殊用途的,供大家思考思考(有很多我也没有验证过的)


### 合法账号
```c
// 字母开头,允许5-16字节,允许字母数字下划线
^[a-zA-Z]\w{4,15}$

合法密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 至少八个字符,至少一个字母和一个数字:
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$

// 至少八个字符,至少一个字母,一个数字和一个特殊字符:
^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$

// 最少八个字符,至少一个大写字母,一个小写字母和一个数字
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$"

// 至少八个字符,至少一个大写字母,一个小写字母,一个数字和一个特殊字符:
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}"

// 最少八个最多十个字符,至少一个大写字母,一个小写字母,一个数字和一个特殊字符:
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,10}"

检验汉字

1
2
// 汉字(编码)
^[\u4e00-\u9fa5]{0,}$

常用1

1
2
3
4
5
1. xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$
2. 空白行的正则表达式:\n\s*\r (可以用来删除空白行)
3. HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? />
4. 首尾空白字符的正则表达式:^\s*|\s*$或(^\s*)|(\s*$) (可以用来删除行首行尾的空白字符)
5. 腾讯QQ号:[1-9][0-9]{4,} (腾讯QQ号从10000开始)

常用2

说明 正则表达式
网址(URL) [a-zA-z]+://[^\s]*
IP地址(IP Address) ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
日期(年-月-日) (\d{4}|\d{2})-((1[0-2])|(0?[1-9]))-(([12][0-9])|(3[01])|(0?[1-9]))
日期(月/日/年) ((1[0-2])|(0?[1-9]))/(([12][0-9])|(3[01])|(0?[1-9]))/(\d{4}|\d{2})
时间(小时:分钟, 24小时制) ((1|0?)[0-9]|2[0-3]):([0-5][0-9])
中文及全角标点符号(字符) [\u3000-\u301e\ufe10-\ufe19\ufe30-\ufe44\ufe50-\ufe6b\uff01-\uffee]
中国大陆邮政编码 [1-9]\d{5}
整数 -?\d+
小数 (-?\d+)(\.\d+)?
不包含abc的单词 \b((?!abc)\w)+\b
##参考文献
正则表达式入门
晚晴幽草轩轩主
zxin
极客学院wiki
deerchao

如果你觉得有丶收获的话