正则再学习

感想:最近参加了一个面试,结果被人鄙视了。
A: “你会写正则吗?”
我:”会,有自学过。“
A: “这里有几个,你写下。”
都写了,结果他一看,问需要这么复杂吗?我自己也清楚这种东西不用就忘,能记得都是最基本的,甚至很多都是以前用过导致记忆下来的。
因此,有必要再系统的学习一遍。
先导正则介绍(带解释,之后由例子总结升华到理解):

1.匹配长度不超过40个字符: ^.{1,40}$; 长度不超过: ^.{0,63}$;
2.匹配长度小于4位的整数: ^\\d{1,4}$; 13位整数: ^\\d{1,3}$;
总结: 开头 ^, 结尾: $; 然后是匹配类型(.,\\d) + 长度区间{}
3.校验saveType: ^(submit|draft)$; 校验-101: {-1|0|1};
4.校验true: ^true$
5.校验0-100%不能为空: ^([0-9]{1,2}|100)%$; 可以为空: ^(([0-9]{1,2}|100)%)(0,1)$
6.校验时间格式为YYYY/MM/DD: ^((?:19|20)\\d\\d)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$;
7.校验时间格式为YYYY/MM/DD可以为空:^((?:19|20)\\d\\d)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$|^.{0}$
8.校验时间格式为YYYY/MM/DD hh:mm:ss正则:
	^((?::19|20)\\d\\d)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) [0-2][0-3]-[0-5][0-9]-[0-5][0-9]$;
10.校验空白字符串128: [\\s\\S]{1,128};
11.匹配所有字符: ^.*$;
12.匹配数字取值范围(0-65534): ^(^[0-9]$)|(^[1-9]\\d{1,3}$)|(^[1-5]\\d{4}$)|(^6[0-4]\\d{3}$)|(^65[0-4]\\d{2}$)||(^655[0-2]\\d{1}$)|(^6653[0-4]$))$
13.匹配中英文数字_空格-64: ^[\u4e00-\u9fa5A-Za-z0-9_& -]{64}$
特别说明:\u4e00-\u9fa5是指中文的unicode范围。
14.寻找一段话中的特定信息():abc-1019-1shsdka&19931118& 过滤到第一个&符号: ^adc.*?&

正式介绍规则:
简单易理解
匹配以下字符转义,例如:^

匹配开始结束: ^ $
子表达式开始结束: ()
贪婪匹配: .(单个字符,除了\n) *(子表达式多次,含0) +(子表达式至少一次)
匹配前面子表达式0次或者1: ?(长用来终结贪婪)
或匹配: |
范围匹配: {} 用法如上{n} {n,m},{n,}
匹配所包含的任意一个字符: [] 

接着是常用意义(都应该知道):

换页: \f
回车换行: \r\n
空白字符: \s 包含空格,tab等
非空白字符: \S(用处不大)
单词边界: \b 非词边界: \B
制表符: \t  \v(垂直制表,不常见)
进制符号: \d \o \h

注意事项:

1,adc* 能匹配到ab及abccccc等。
2,abc+ 能匹配到abc及abcccc等。
3,abc+? 能匹配abc,但不能abccc等。
4[^abc] [^a-z] 负字符集合 匹配不到范围中的字符。
5,\w = [A-Za-z0-9_] \W = 前面取反
6, (?:regex) (?=regex)等预查模式,很少用啦。
?=?!?<= ?<! 用于限定它前后的表达式,不能单独使用,本身没有作用。
a(?=b) 匹配后面有 b 的 a。
a(?!b) 匹配后面没有 b 的 a。
(?<=a) b 匹配前面有 a 的 b。
(?<!a) b 匹配前面没有 a 的 b。

看到底了哟!请来回看几遍哟!

利用上面断言匹配密码:
至少8个字符,至少1个字母,1个数字和1个特殊字符:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,10}

1、全匹配:[A-Za-z\d$@$!%*?&]{8,10}
2、过滤规则:(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值