当前位置:网站首页>安全第四次课后练习
安全第四次课后练习
2022-07-27 03:45:00 【科目三考了六次】
正则表达式的基础知识点
1、匹配字符
. 匹配任意单个字符,不能匹配空行
[ ] 匹配指定范围内的任意单个字符
[^] 取反
[:alnum:] 或 [0-9a-zA-Z]
[:alpha:] 或 [a-zA-Z]
[:upper:] 或 [A-Z]
[:lower:] 或 [a-z]
[:blank:] 空白字符(空格和制表符)
[:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广 )
[:cntrl:] 不可打印的控制字符(退格、删除、警铃...)
[:digit:] 十进制数字 或[0-9]
[:xdigit:] 十六进制数字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 标点符号

2、配置次数
* 匹配前面的字符任意次,包括0次,贪婪模式:尽可能长的匹配
.* 任意前面长度的任意字符,不包括0次
\? 匹配其前面的字符0或1次
+ 匹配其前面的字符至少1次
{n} 匹配前面的字符n次
{m,n} 匹配前面的字符至少m次,至多n次
{,n} 匹配前面的字符至多n次
{n,} 匹配前面的字符至少n次

3、位置锚定
^ 行首锚定,用于模式的最左侧
$ 行尾锚定,用于模式的左右侧
^PATTERN$,用于模式匹配整行
^$空行
^[[:space:]].*$ 空白行
< 或 \b 词首锚定,用于单词模式的左侧
> 或 \b 此为锚定,用于单词模式的右侧

4、需要转义的特殊字符
$ ( ) * + . ? [ \ ^ {
在文本中遇到这几种特殊字符想转为文本需要通过反斜杠 \ 进行转义:
/\$ \( \) \* \+ \. \? \[ \\ \^ \{ /g
注意:
上面为什么没出现 - 减号,}右花括号,]右中括号的原因?首先减号符是在[ ]中的,在前面没遇到转义的[ 左方括号时,减号符及右方括号 -]是当普通文本处理,无需转义,而花括号也如此。
5、概括字符集
\d 匹配出数字,也就是数字概括字符集,字符集表示[0-9]
\D 匹配非数字,字符集表示[^0-9]
\w 匹配字母、数字,也就是单词字符,字符集表示[A-Za-z0-9]
\W 匹配非单词字符,\n\t\r#$%^空格
\s 匹配\n\t\r空格、空白字符,不包括%$#特殊字符
\S 匹配非空白字符
. 匹配除换行符\n以外的所有字符
6、断言
x(?=y) 匹配'x'仅仅当'x'后面跟着 'y',这种叫做先行肯定断言
(?<=y) 匹配'x'仅仅当'x'前面是'y',这种叫做后行肯定断言
x(?!y) 仅仅当'x'后面不跟着'y'时匹配'x',这种称为先行否定断言
(?<!y)x 仅仅当'x'前面不是'y'时匹配'x',这种称为后行否定断言
正则表达式输入密码格式
一般情况下,我们在注册一个新账户的时候,会设置密码,在设置密码的时候会有一个字符限制的情况,有的会要求简单就数字+字母就可以了,有的肯会稍微严格一点,格式要求就是数字+字母+特殊符号。可能更严格的就是字母要区分大小写。
1、在要求数字+字母的格式的时候,利用正则表达式可以写成
(?=.*[0-9])(?=.*[a-z])这样的话在我们输出的时候他是符合条件的。但是当我们换一种方式设置的时候,就会报错。可以看到即便输入的含有字母或者数字,但是输入中含有没有设置的内容,也是不可行的。
2、在要求数字+字母+特殊符的格式的时候,利用正则表达式可以写成
(?=.*[0-9])(?=.*[a-z])(?=.*[[email protected]\#$%^&\*\\\(\)])结果也是只可以输入的组合是数字+小写字母+特殊符号,因为在一些语法里面,部分特殊符号会具有一些特定含义,所以在【】中需要加上\来代表转义字符进行转义。
3、在严格要求的情况下,一般要求输入的都是数字+小写字母+大写字母+特殊符的格式的时候,利用正则表达式可以写成
(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[[email protected]\#$%^&\*\\\(\)])
4、所以,在上述情况下,我们需要对字符串的长度输入进行一些限制,比如说最少输入8位,最多输入16位。
那么我们就可以直接在正则表达式后面加上一个**^.{8,16}$**也就是对字符串长度尽行了限制。
(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[[email protected]\#$%^&\*\\\(\)])^.{8,16}$
这样的话,如果输入字符长度超过16或者不够8都是不可以的,但是在这个区间内是刚刚好。
过长的情况下
不够的情况下:
但是在这个区间内就刚好
边栏推荐
- els 方块显示原理
- DINO 论文精度,并解析其模型结构 & DETR 的变体
- 好用的shell快捷键
- PX4模块设计之十二:High Resolution Timer设计
- 第六章:云数据库
- Five basic data structures of redis
- Delete the whole line of Excel, and delete the pictures together
- JS three methods of traversing arrays: map, foreach, filter
- Shel automatically sets directory permissions
- Practice of microservice in solving Library Download business problems
猜你喜欢

js三种遍历数组的方法:map、forEach、filter

influxDB 基础了解

Brightcove任命Dan Freund为首席营收官

Nacos startup and login

Install and configure Debian on a wired network

网工知识角|只需四个步骤,教会你使用SecureCRT连接到eNSP,常用工具操作指南必看

Wechat applet rotation map

The project parameters are made into configurable items, and the @configurationproperties annotation is used

F - Pre-order and In-order(Atcoder 255)

e.target与e.currentTarget的区别
随机推荐
[machine learning network] BP neural network and deep learning-6 deep neural networks (DNN)
c# 获取uuid
项目参数做成可配置项,@ConfigurationProperties注解的使用
452 pages, 130000 words, the overall solution of modern smart Township Xueliang project 2022 Edition
EVT interface definition file of spicy
How to set user-defined display for Jiaming Watch
DINO 论文精度,并解析其模型结构 & DETR 的变体
The external symbol parsed by the method "public: virtual _ucdecl nvinfer1:: yololayerplugin:: ~yololayerplugin (void)" "public: virtual
sram、dram、sdram、ddr的区别和用途
[small sample segmentation] msanet: multi similarity and attention guidance for boosting few shot segmentation
【比赛参考】PyTorch常用代码段以及操作合集
Spark practice case (upgraded version)
els 兼容性DC、传递图片到窗口
P1438 boring sequence line segment tree + difference
Ribbon负载均衡策略与配置、Ribbon的懒加载和饥饿加载
The project parameters are made into configurable items, and the @configurationproperties annotation is used
spark练习案例(升级版)
从零开始C语言精讲篇4:数组
JVM调优中的一些常见指令
The real digital retail should have richer connotation and significance