正则两个网站
1. 正则在线测试工具:https://regexr-cn.com/
2. 正则练习:https://codejiaonang.com/
字符组[]
例1:/[Pp]ython/g
可以匹配到:python,Python
可以发现[Pp]既可以匹配到大写的P也可以匹配到小写的p
例2:/[0-9]/g
可以匹配到:0123456789
可以发现[0-9]把数字0-9中的任意一个都能匹配上,其中 - 表示区间
例3:/[a-z]/g
可以匹配到:abcdefghijklmnopqrstuvwxyz
可以发现[a-z]把小写25个英文字幕中的任意一个都能匹配上
例4:/[A-Z]/g
可以匹配到:ABCDEFGHIJKLMNOPQRSTUVWXYZ
可以发现[A-Z]把小写25个英文字母中的任意一个都能匹配上
例5:/[0-9a-zA-Z]/g
匹配所有的数字,小写字母,大写字母
匹配特殊字符:----------------------------------------------------------------------------------------------------
1. '-':因为正则中'-'表示区间,匹配 '-',需要用到转义字符:/[ \- ]/
2. '()':转义字符:/[ \( ]/
3. '[]':转义字符:/[ \[ ]/
取反:-----------------------------------------------------------------------------------------------------------
注意: '^'放在[]里面表示取反
例1:/[^0-9]/g
^表示取反,意思是不匹配0-9之间的数字
快捷方式:-------------------------------------------------------------------------------------------------------
1. '\w':匹配字母,数字,下划线 事例:/[\w]/g
2. '\W':匹配 非 字母,数字,下划线 事例:/[\W]/g
3. '\s':匹配空白,比如空格,tab,换行 事例:/[\s]/g
4. '\S':匹配 非 空白,比如空格,tab,换行 事例:/[\S]/g
3. '\d':匹配数字 事例:/[\d]/g
4. '\D':匹配所有的 非 数字 事例:/[\D]/g
5. '\b':匹配单词边界
/*
事例:匹配单词 clever
/[\bclever\b]/g
在单词两边加上\b作为单词的边界,表示只匹配单词clever
*/
规定开头结尾:----------------------------------------------------------------------------------------------------
例1:/^python/g
可以匹配到:以python开头
例2:/python$/g
可以匹配到:以python结尾
特殊字符匹配:----------------------------------------------------------------------------------------------------
'.':匹配任意字符,不包括换行
/*
事例:
/.ar/g
表示匹配任意字符之后是ar的字符
*/
'?':指定一个字符出现1次或0次
/*
事例:
/honu?r/g
可以匹配到honur和honr
解释:这个u可以匹配到也可以不匹配到
*/
{}
{n}:匹配n个字符 事例:/\d{3}/g 表示只能取0-9之间的三个数
{a,b}:匹配a或b个字符
注意: 表示贪婪模式
/*
事例:
/\d{3,4}/g
能匹配到3个数字或者4个数字
*/
{a,b}?:只匹配a个字符,不匹配b个字符
注意: ?表示非贪婪模式
/*
事例:
/\d{3,4}?/g
只匹配到3个数字
*/
{a,}:匹配大等于a个字符
/*
事例:
/\d{3,}/g
匹配到3个或更多个数字
*/
特殊:
'+':表示{1,} 事例:/\d+/g 表示匹配1个或多个数字
'*':表示{0,} 事例:/\d*/g 表示匹配0个或多个数字
分组()
例1: 在一组数据 张三 0371-1234567 获取张三后面的电话号码
解题:/(\d{4}-\d{7})/g
例2: 数据 <p> hibdgaijgfasjkgfak <p> 获取p标签中的内容
解题:/<p>(.*)</p>/g
例3: 数据2022-3-8 提取 2022 3 28
数据2022-03-08 提取 2022 03 08
解题:/(\d{4}).?(\d{1,2}).?(\d{1,2})/g
或者条件:-------------------------------------------------------------------------------------------------------
例1: 数据 img1.jpg img2.jpeg img3.png img4.gif 提取图片后面的后缀名
解题:/(.jpg|.jpeg|.png|.gif)/g
非捕获分组:-----------------------------------------------------------------------------------------------------
注:分组是用来捕获数据的,当不捕获数据,却想要分组时,使用非捕获分组