这是我参与「第五届青训营 」伴学笔记创作活动的第 16 天。
正则表达式在线测试工具:regex101.com/
1. 限定符
a*:a出现 0 次或多次a+:a出现 1 次或多次a?:a出现 0 次或 1 次a{6}:a出现 6 次a{2,6}:a出现 2 到 6 次 (2,3,4,5,6)a{2,}:a出现 2 次及以上(ab)*:ab出现 0 次或多次
2. 或运算符
(a|b):匹配a或者b((ab)|(cd)):匹配ab或者cd
3. 字符集合
[abc]:匹配 a 或者 b 或者 c(集合 abc 中的任意一个)[a-z]:匹配 a 到 z 的字符集合[^0-9]:匹配不是集合 0 到 9的[a-fA-F0-9]:匹配 a到f A到F 0到9 的集合(十六进制的数字)
4. 元字符
\d:匹配数字字符\D:匹配非数字字符\w:匹配单词字符(英文大小写字母、数字、下划线)\W:匹配非单词字符\s:匹配空白字符(空格、换行、回车)\S:匹配非空白字符.:匹配除换行符以外的任意字符\b:标注字符边界^:匹配行首$:匹配行尾
正则表达式模式是贪婪模式,尽可能多的匹配字符。加上 ? 使它变为懒惰模式。
<.+>匹配:<span><b>hello,regular</b></span><.+?>匹配:<span>、<b>、</b>、</span>
5. 实例
- 快速选择 git meager
=======(.|\r|\n)*?>>>>>>> ef18e3b4337f758c1cde2fee14d0251238b399a1
(.|\r|\n):匹配所有字符和换行符(.|\r|\n)*?:懒惰模式 可以匹配如下文本:
=======
class A {
}
class B {
}
>>>>>>> ef18e3b4337f758c1cde2fee14d0251238b399a1
- 十六进制 RGB 颜色值匹配
#[a-fA-F0-9]{6}\b
#00
#ffffff
#fafafa
#00hh00
#000000
#ffffffff
- IP 地址匹配
\b(((25[0-5])|(2[0-4]\d)|([01]?\d\d?))\.){3}((25[0-5])|(2[0-4]\d)|([01]?\d\d?))\b
说明
(25[0-5])|(2[0-4]\d)|([01]?\d\d?)(25[0-5]):匹配 250 到 255(2[0-4]\d):匹配 200 到 249([01]?\d\d?):匹配[01]\d\d:匹配 000 到 199\d\d:匹配 00 到 99~~[01]\d:匹配 00 到 19~~\d:匹配 0 到 9
123
255.255.255.0
192.168.0.1
0.0.0.0
256.1.1.1
This is not IP address.
123.123.0