webAPI 正则表达式

146 阅读2分钟

正则表达式

一.正则表达式介绍

  1. 正则表达式:是对字符串进行逻辑匹配运算的内置对象

2.正则表达式作用:字符串格式校验

3.正则表达式使用流程:

(1)创建正则对象: let reg = new RegExp('正则')

(2)调用正则对象的test方法: reg.test('需要校验的字符串')

  true:校验通过    false:校验不通过

(3)正则的简写

正则 : /正则/

二.正则表达式语法由两部分组成

1.原义文本字符:字符串本身的含义

/abc/ :检测字符串中有没有 abc

2.元字符:改变了字符串本身的含义,类似于js中的关键字

[ ] { } ( ) . \ + ? * ^ $ |

三.字符类

1./[abc]/: 字符类.将a或b或c归为一类,满足任意一个即可.说人话就是检测字符串中有没有 a或b或c

2./[^abc]/:反向类(负向类).将不是a或 不是b 或 不是c的归为一类,满足任意一个即可.说人话就是检测字符串中有没有除abc之外的任意字符

四.范围类

1.范围类

        /[0-9]/ : 检测有没有数字
        /[a-z]/ : 检测有没有小写字母
        /[A-Z]/ : 检测有没有大写字母

2.范围类特点

2.1 范围类是一个闭区间 : /[5-8]/ : 包含5,也包含8

2.2 范围类可以连写: /[0-9a-zA-Z]/ : 大小写字母+数字

2.3 范围类一定是 左边 < 右边 (依据ASCII码)

            /[5-8]/ : 正确
            /[8-5]/ : 报错
            

五.预定义类

微信图片_20220403193122.png

六.边界(重点)

1.开头边界: /^abc/

  正确含义: 检测 以a开头 +  bc的字符串   (^只对a检测)
  错误含义: 检测 以abc开头的字符串    (^把abc当做整体)
  

2.结尾边界: /abc$/

  正确含义 :   ab +c结尾的字符串   ($只对c检测)
  错误含义:    以abc结尾   ($把abc当做整体)
  
  

3.严格匹配: 开头边界与结尾边界同时使用

/^abc$/   : 只有唯一答案 ,就是abc本身
  正确含义 :  以a开头 + b + 以c结尾   (^检测a开头, $检测c结尾)
  错误含义 :  以abc开头,以abc结尾
  

七.量词

量词作用: 检测字符出现的次数

      ?                       出现零次或一次(最多出现一次 <=1)
      +                       出现一次或多次(至少出现一次 >=1)
      *                       出现零次或多次(任意次)
      {n}                     出现n次
      {n,m}                   出现n-m次
      {n,}                    出现至少n次(>=n)
      

八.分组

() 在正则中有两种含义 1.分组 : 把多个字符归为一组,用于量词

 检测字符串中出现三次 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('正则','修饰符')


g : global,全局匹配
(1)/a/:默认情况下,正则只能匹配第一个字符
console.log('a123A456aaAA'.replace(/a/, 'X')) //X123A456aaAA
(2)/a/g:匹配所有a
console.log('a123A456aaAA'.replace(/a/g, 'X')) //X123A456XXAA

i : intensity, 不区分大小写
(1)/A/ :默认情况下,正则区分大小写
console.log('a123A456aaAA'.replace(/A/, 'X')) //a123X456aaAA
(2)/A/i :不区分大小写 a和A 都可以
console.log('a123A456aaAA'.replace(/A/i, 'X')) //X123A456aaAA

修饰符可以同时使用
/a/ig :不区分大小写+全局匹配
console.log('a123A456aaAA'.replace(/A/ig, 'X')) //X123X456XXXX

十.常用正则表达式总结 1.手机号正则

        /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/
       

2.验证码

        /^\d{6}$/
    

3.账号密码 6-20位: 大小写字母, 下划线_

        /^\w{6,20}$/
    

4.邮箱

        /^\w+[@]\w+\.\w+(\.\w+)?$/