正则表达式

正则表达式的基础知识点

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])(?=.*[!@\#$%^&\*\\\(\)])

结果也是只可以输入的组合是数字+小写字母+特殊符号,因为在一些语法里面,部分特殊符号会具有一些特定含义,所以在【】中需要加上\来代表转义字符进行转义。

3、在严格要求的情况下,一般要求输入的都是数字+小写字母+大写字母+特殊符的格式的时候,利用正则表达式可以写成

(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!@\#$%^&\*\\\(\)])

 

4、所以,在上述情况下,我们需要对字符串的长度输入进行一些限制,比如说最少输入8位,最多输入16位。
那么我们就可以直接在正则表达式后面加上一个**^.{8,16}$**也就是对字符串长度尽行了限制。

(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!@\#$%^&\*\\\(\)])^.{8,16}$

这样的话,如果输入字符长度超过16或者不够8都是不可以的,但是在这个区间内是刚刚好。
过长的情况下

 不够的情况下:

但是在这个区间内就刚好

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力学IT的小徐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值