一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第1天,点击查看活动详情。
一、正则表达式介绍
1.正则表达式 : 是对字符串进行匹配运算的内置对象
表达式 : 运算作用。 对字符串进行匹配运算。
内置对象(Regular Expression) : 存储一些属性和方法.
2.正则表达式作用 : 格式校验
* 检查表单中字符串格式(手机、验证码、账号、密码)
3.正则表达式使用流程 :
(1)创建正则对象 : let reg = new RegExp('正则')
* 简写: let reg = /正则/
(2)调用test()方法 : reg.test('需要校验的字符串')
* true:校验通过 false:校验不通过
二、元字符与原义文本字符
1.原义文本字符 : 就是字符串本身的含义
说人话: 写什么就是什么,千万不要乱想。想的越多,错的越离谱.
2.元字符 : 改变字符串本身的含义(相当于js的关键字)
[] () {} ^ $ * + | . \ ?
三、字符类
[] : 字符类, 把字符归为一类
- /abc/ : 原义文本字符. 检测字符串有没有abc. 不是有a且有b且有c,也不是有a或有b或有c。就是abc本身
- /[abc]/ : 字符类。 把a和b和c归为一类,只要符合其中任何一类即可.
说人话 : 只要字符串有 ‘是abc’ 任意一个即可 - /[^abc]/ : 反向类(负向类) 。 把 不是a 和 不是b 和 不是c 的字符串归类一类. 只要符合其中任何一类即 可。
说人话: 只有字符串有 ‘不是abc’ 的任意字符
四、范围类
字符范围
/[0-9]/ : 检测有没有数字
/[a-z]/ : 检测有没有小写字母
/[A-Z]/ : 检测有没有大写字母
范围类注意点:
(1)范围类是一个闭区间。 /[5-8]/ : 包含5,也包含8
(2)范围类可以连. [0-9a-zA-Z] : 检测大小写字母+数字
(3)范围类 左边 < 右边
/[5-8]/ : 正确
/[8-5]/ : 错误
五、预定义类
预定义类: 正则表达式提供好的用来匹配常见的字符类
. [^\r\n] 除了回车和换行之外的所有字符
\d [0-9] 数字字符
\D [^0-9] 非数字字符
\s [\f\n\r\t\v] 空白字符
\S [^\f\n\r\t\v] 非空白字符
\w [a-zA-Z_0-9] 单词字符(字母、下划线、数字)
\W [^a-zA-Z_0-9] 非单词字符
五、边界
开头边界 :/^abc/ 检测以a开头的字符(元字符可能有多种含义,类似于js中的+ )
1.开头边界 : /^abc/
错误含义: 以abc开头
正确含义: 以a开头 + b + c
2.结尾边界: /abc$/
错误含义: 以abc结尾
正确含义: a + b + 以c结尾
严格匹配 : 开头边界与结尾边界同时存在
/^abc$/
错误: 以abc开头 , 以abc结尾
正确含义: 以a开头 + b + 以c结尾
六、量词
? 出现零次或一次(最多出现一次 <=1)
+ 出现一次或多次(至少出现一次 >=1)
* 出现零次或多次(任意次)
{n} 出现n次
{n,m} 出现n-m次
{n,} 出现至少n次(>=n)
七、分组
() 在正则中有两种含义
(2).分组 : 把多个字符分为一组,用于量词
需求: 检测字符串中出现三次 love
/love{3}/ : 含义 lov + e出现三次
/(love){3}/: 含义 (love) 出现三次
(2).提升优先级 : 提升 | 的优先级
需求: 检测字符串中有没有 love 或 live
/lo|ive/ : 检测 lo 或 ive
/l(o|i)ve/ : 检测 l + o或i + ve
八、修饰符
(1).修饰符 : 对正则匹配结果起到修饰作用
g : global 全局匹配
i : intensity 不区分大小写
(2).修饰符语法
new RegExp('正则','修饰符')
/正则/修饰符