正则表达式学习记录

正则表达式学习记录

通常大写表示反义词例如d表示匹配数字,D表示匹配非数字

常用匹配字符

符号 说明
. 匹配除换行外的所有字符
w 匹配所有字母数字,等同于 [a-zA-Z0-9_]
d 匹配数字: [0-9]
s 匹配所有空格字符,等同于: [
fp{Z}]
f 匹配一个换页符
匹配一个换行符
匹配一个回车符
匹配一个制表符
v 匹配一个垂直制表符
p 匹配 CR/LF(等同于
),用来匹配 DOS 行终止符

字符,数字,空格字符有反义匹配即W,D,S

限定符,量词

符号 说明
* 出现0次或多次
+ 出现1次或多次
? 出现0次或1次
{n} 出现n次
{n,m} 出现n次至m次,可不写n或m表示至少n次或至多m次

贪婪匹配

默认为贪恋匹配,即默认尽可能多的匹配
"/(.*at)/" => The fat cat sat on the mat.

惰性匹配

在量词后加上?可将匹配模式修改为惰性匹配,尽可能少的匹配
"/(.*?at)/" => The fat cat sat on the mat.

定位符

定位符仅匹配位置并不匹配指定字符

符号 说明
^ 开始位置
$ 结束位置
匹配单词的开始或结束
B 匹配非单词的开始或结束

范围

符号 说明
| 匹配左侧或者右侧, x|y 表示匹配x或者y,左右可以是分组
[] 括号内为匹配范围,[avd],表示avd三个字母都可匹配
[a-z] 表示匹配连续的范围a到z
[^a-z] 表示匹配a到z之外的任意字符

分组

符号 说明
() 括号内为子表达式,子表达式可被引用
n为1-9之间的数字,在正则表达式中来引用表达式中的分组,例如(a)1,等价于aa

分组之后的表达式可在文本编辑器中使用$n来引用

其他

正则表达式修饰符

不同语言对正则表达式有不同的修饰符例如忽略大小写,多行匹配等,js是在/表达式/修饰符 中配置。具体需要看使用语言中的实现。
js中正则表达式的标记,可组合使用,在正则表达式最后加上符号
|符号|说明|
|-|-|
| g | 全局匹配 |
| i | 不区分大小写 |
| m | 多行搜索 |
| s | 允许.匹配换行符 |

  • 默认正则会返回第一个匹配的结果,加上全局匹配后会返回所有匹配的结果
    "/.(at)/" => The fat cat sat on the mat.
    "/.(at)/g" => The fat cat sat on the mat.

特殊字符匹配

符号 说明
xXX 编号在 0 ~ 255 范围的字符,比如:点击测试 空格可以使用 "x20" 表示
uXXXX 任何字符可以使用 "u" 再加上其编号的4位十六进制数表示,比如:点击测试 "u4E2D"

匹配规则,环视

符号 说明
(?:pattern) 捕获但不单独获取结果
(?=pattern) 肯定查询,仅当匹配字符串符合后缀匹配内容才判定为匹配,例如Windows(?=95
(?<=pattern) 效果同上但放在字符串前,匹配前缀,例如 (?<=95
(?!pattern) 否定查询,仅当匹配字符串不符合匹配后缀才判定为匹配
(?<!pattern) 效果同上但放在字符串之前,匹配前缀,例如 (?<!95

资料

  1. 将正则表达式图形化,方便理解

https://regexper.com/

https://jex.im/regulex/

2.在线测试正则

https://regex101.com/r/AyAdgJ/1

https://regexr.com/

  1. 参考资料

https://blog.csdn.net/hello_word2/article/details/84890548

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions

https://www.runoob.com/regexp/regexp-tutorial.html

http://www.regexlab.com/zh/regref.htm

https://xie.infoq.cn/article/dcc7103126233028945c67c43

https://github.com/ziishaned/learn-regex/blob/master/translations/README-cn.md

hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 正则表达式学习记录