天生我材必有用,努力学习吧~,今天学习正则

157 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第1天,点击查看活动详情

一、正则表达式介绍

1.正则表达式 : 是对字符串进行匹配运算的内置对象
表达式 : 运算作用。 对字符串进行匹配运算。
内置对象(Regular Expression) : 存储一些属性和方法.
2.正则表达式作用 : 格式校验
* 检查表单中字符串格式(手机、验证码、账号、密码)
3.正则表达式使用流程 :
(1)创建正则对象 : let reg = new RegExp('正则')
* 简写: let reg = /正则/
(2)调用test()方法 : reg.test('需要校验的字符串')
* true:校验通过 false:校验不通过

二、元字符与原义文本字符
1.原义文本字符 : 就是字符串本身的含义
说人话: 写什么就是什么,千万不要乱想。想的越多,错的越离谱.
2.元字符 : 改变字符串本身的含义(相当于js的关键字)
[] () {} ^ $ * + | . \ ?

三、字符类

[] : 字符类, 把字符归为一类

  1. /abc/ : 原义文本字符. 检测字符串有没有abc. 不是有a且有b且有c,也不是有a或有b或有c。就是abc本身
  2. /[abc]/ : 字符类。 把a和b和c归为一类,只要符合其中任何一类即可.
    说人话 : 只要字符串有 ‘是abc’ 任意一个即可
  3. /[^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('正则','修饰符')
/正则/修饰符