正则表达式

正则表达式

创建正则表达式

  1. 正则概念

    • 就是我们自己按照语法书写一套规则,用来检测 字符串 是不是符合规则的,从字符串里面捕获出来一部分符合规则的内容
    • 正则表达式也是一个 复杂数据类型
  2. 创建方式

    • //字面量创建
      var reg = /abcd/修饰符
      
      //内置构造函数创建
      var reg = new RegExp('abcd')
      //小括号里面以字符串的形式写我们的规则内容
      

正则表达式对象的方法

  1. test() 检测

    • 作用: 检测字符串是不是符合正则要求

    • 语法: 正则.test(要检测的字符串)

    • 返回值: 一个布尔值

      ​ true: 表示字符串符合正则要求

      ​ false: 表示字符串不符合正则要求

  2. exec() 捕获

    • 作用: 从字符串里面把满足要求的内容提取出来

    • 语法: 正则.exec(要捕获的字符串)

    • 返回值:

      ​ 1. 在字符串里面没有满足正则要求的字符片段

      ​ => 返回值就是 null

      ​ 2. 在字符串里面有满足正则要求的字符片段

      ​ 2-1. 正则没有 () 没有标识符 g

      ​ => 是一个数组, 里面的索引 [0] 是捕获出来的第一个内容

      ​ => 只能捕获到第一个满足条件的字符片段

      ​ => 你执行多少次, 都是从字符串的开头开始查找

      ​ 2-2. 有标识符 g 的时候(g => 全局标识符)

      ​ => 是一个数组, 里面的索引 [0] 是捕获出来的第一个内容

      ​ => 当你第二次执行这个方法的时候, 是从第一次的结束位置开始查找

      ​ => 你执行多次的时候, 第二次和第一次的捕获结果可能不一样

      ​ => 直到找不到了为止, 返回 null

      ​ 2-3. 正则里面有 () 的存在

      ​ => 是一个数组, 里面的索引 [0] 是捕获出来的第一个内容

      ​ => 索引 [0] 是总 字符串 里面捕获出来的 整体内容

      ​ => 从索引 [1] 开始, 是每一个小括号里面的内容单独捕获出来

      ​ => 小括号的顺序, 按照书写小括号 ( 的顺序开始数

常用字符串匹配正则方法

  1. search()

    • 作用: 在字符串中查找某一个字符片段

    • 语法:字符串.search(正则表达式)

    • 返回值:查找到就是查找到的索引

      ​ 查找不到就是 -1

  2. match()

    • 作用: 从字符串里面捕获出满足条件的片段

    • 语法: 字符串.match(正则表达式)

    • 返回值:

      ​ 在正则没有 全局标识符 g 的情况下, 和 exec 一模一样

      ​ 在正则有 全局标识符 g 的情况下, 就是一个数组, 里面包含所有符合正则的内容

  3. replace()

    • 作用: 替换字符串里面的某一个字符片段

    • 语法:字符串.replace(正则表达式, ‘替换成什么字符串片段’)

      ​ 字符串.replace(正则表达式,function(item,index){return 值})

      ​ 表示根据正则表达式找到要替换的内容,return的内容把找到内容替换

    • 返回值:如果正则表达式没有全局标识符 g 那么就替换第一个内容, 替换好以后返回;

      ​ 如果正则表达式有全局标识符 g 那么全部替换, 替换好以后返回

  4. split()

    • 作用:把字符串分割为字符串数组

修饰符

  • 标识符

  • 作用:修饰整个正则表达式的,写在正则表达式的最后面

  • i => 表示忽略大小写

    g => 全局匹配

    m =>多行匹配

字符匹配

点通配符

  • 点(.)=> 表示的是 一个 非换行的任意内容
  • . 匹配任何一个字符 是一个通配符
  • . 把通配符.转为字符.

方括号范围匹配

  • [] => 字符组

    • 写在中括号里面的任意 一个 字符都可以

    • 一个中括号占一个字符位置

    • 在中括号里面 点(.) 就是一个普通字符

      ​ [0-9] 等价于 \d 的意义

      ​ [0-9a-zA-Z_] 等价于 \w 的意义

  • 中划线(-) => 到, 至

    • 在 [] 或者 [^] 中使用的
    • 表示从一个字符位置 到 一个字符位置
    • 位置必须是 ASKII 码的序号连着的
  • 中文匹配

    • [\u4e00 - \u9fa5]

方括号字符反义

  • [^] => 非字符组
  • 写在这个符号里面的任意 一个 都不行
  • 一个这个符号, 占一个字符位置

转义字符类

  • \s => 表示的是 一个 空格

  • \S => 表示的是 一个 非空格

  • \d => 表示的是 一个 数字

  • \D => 表示的是 一个 非数字

  • \w => 表示的是 一个 数字字母下划线

  • \W => 表示的是 一个 非数字字母下划线

  • \ => 表示转译符号

    ​ 把没有意义的字母转换成有意义的符号

    ​ 把有意义的符号转换成没有意义的字母

    ​ 注意: 它只是把挨着自己的哪个转了

重复匹配

  • 限定符

  • 只是修饰前面 一个符号 的数量

    1. * => 表示至少 0, 0 ~ 正无穷个都可以
    2. + => 表示至少 1, 1 ~ 正无穷个都可以
    3. ? => 表示 0 个 或者 14. {n} => 表示只能是 n 个
    5. {n,} => 表示至少 n 个, n ~ 正无穷个都个以
       {0,} 等价于 * 的意义
       {1,} 等价于 + 的意义
    6. {n,m} => 表示 n ~ m 个
    //注意贪婪匹配,先匹配最大的字符串
    例如:console.log("aaaaaaa".match(/a{1,4}/g));//先从最大的数字开始找,结果是aaaa,aaa
         console.log("aaaaaaa".match(/a{0,3}/g));//结果是aaa,aaa,a,""
       {0,1} 等价于 ? 的意义
    

选择匹配

  • | => 或者
  • 一般和小括号连用, 表示一个整体或者另一个整体

分组

  • () => 一个整体

起始和结束符

  • 边界符
  • ^(英文的) => 表示字符串的开头
  • $(英文的) => 表示字符串的结尾
  • 注意: 开头和结尾一起使用的时候, 表示从开头到结尾
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值