基础篇链接 https://blog.csdn.net/qq_30258721/article/details/126210724
修饰符
修饰符即 /g 中的g,含义是全局匹配,修饰符有4种。
i 代表不区分大小写,匹配时A与a无区别
g 代表全局匹配
m 代表多行匹配,以换行符作区别,每一行单独匹配
s 使任意字符(.)可以包含换行符
分组
()可用于捕获多个数据,如:
/(\w)@(\w).(\w)/g
可将578@163.com捕获数据为
578
163
com
或操作
使用分组还可以搭配 | 一起使用。如:
/(doc|docx)$/g
可以捕获以doc或者docx结尾的数据
断言
断言也称预搜索。当捕获的数据前后有内容要求,但又不捕获这些内容时,就用到断言。这样说很抽象,举个例子。捕获 789la 415789字符串中789后是la的数据,这是用正向先行断言即789(?=la)。
注 断言小节√为能捕获 ×为不能捕获
正向先行断言
(?=表达式) 表示从某位置到结尾,必须匹配到表达式
/homo竟在(?=我身边)/g // 即捕获‘homo竟在’后有‘我身边’的数据
homo竟在我身边 √
homo竟在你身边 ×
反向先行断言
(?!表达式)表示从某位置到结尾不能匹配表达式
/homo竟在(?!我身边)/g // 即捕获‘homo竟在’后不是‘我身边’的数据
homo竟在我身边 ×
homo竟在你身边 √
homo竟在 √
正向后行断言
(?<=表达式)表示从某位置到开头,必须匹配表达式
/(?<=homo)竟在(?=我身边)/g // 即捕获‘竟在’前有‘homo’,‘竟在’后有‘我身边’的数据
homo竟在我身边 √
homo竟在我身后 ×
厚礼蟹竟在我身边 ×
反向后行断言
(?<!表达式)表示从某位置到开头不能匹配表达式
/(?<!homo)竟在(?=我身边)/g // 即捕获‘竟在’前没有‘homo’,‘竟在’后有‘我身边’的数据
homo竟在我身边 ×
厚礼蟹竟在我身边 √
厚礼蟹竟在我身后 ×
运算优先级
正则表达式是从左到右进行运算,根据优先级大小执行。
转移字符 > ()和[] > 限定字符(?,*,+,{}) > 元字符(^,$,字符) > |(或操作)
结语
至此,正则表达式进阶篇已结束,可以继续练习巩固知识点。如果你能完全掌握基础篇和进阶篇的知识,那么恭喜你,正则表达式匹配问题已难不倒你了。