javascript正则表达式基本使用

  1. 定义和匹配方法的使用

    • 定义

      • 字面量定义

        let reg = /abc/;
        

        javascript脚本加载后,正则表达式字面量会被编译。当正则表达式保持不变时,使用此方法可获得更好的性能。

      • 构造函数定义

        let reg = new RegExp("abc");
        

        javascript脚本运行过程中,用构造函数创建的正则表达式会被编译。如果正则表达式将会改变,或者它将会从用户输入等来源动态产生,就需要用构造函数来创建正则表达式。

    • 匹配

      方法描述类型
      test测试是否匹配正则表达式,返回 true 或 falseRegExp方法
      match查找匹配,返回一个数组,在未匹配到时会返回 nullString方法
      replace查找匹配,并且使用替换字符串替换掉匹配到的子字符串String方法
      split使用正则表达式或者一个固定字符串分隔一个字符串,并将分隔后的子字符串存储到数组中String方法
      exec查找匹配,返回一个数组,在未匹配到时会返回 nullRegExp方法
      matchAll查找匹配,返回一个迭代器(interator)String方法
      search测试匹配,返回匹配到的位置索引,在失败时返回-1String方法

      使用示例如下:

      //定义
      let reg = /d(b+)d/g;
      //或 let reg = new RegExp("d(b+)d", "g");
      
      //test方法使用
      let testResult = reg.test("cdbbdbsbz");
      console.log(testResult);  //true
      
      //match方法使用
      let str = "cdbbdbsbz"
      let matchResult = str.match(reg);
      console.log(matchResult);  //Array["dbbd"]
      
      //replace方法使用
      let str = "cdbbdbsbz"
      let replaceResult = str.replace(reg,'x');
      console.log(replaceResult);  //cxbsbz
      
      //split方法使用
      let str = "cdbbdbsbz"
      let splitResult = str.split('');
      console.log(splitResult);  //["c", "d", "b", "b", "d", "b", "s", "b", "z"]
      
      //exec方法使用
      let execResult = reg.exec("cdbbdbsbz");
      console.log(execResult);  //Array["dbbd","bb"]
      
      //matchAll方法使用
      let str = "cdbbdbsbz"
      let matchAllResult = str.matchAll(reg);
      console.log(...matchAllResult);  //Array["dbbd","bb"]
      
      //search方法使用
      let str = "cdbbdbsbz"
      let searchResult = str.search(reg);
      console.log(searchResult);  //1
      
  2. 基础知识

    • 元字符

      字符说明
      .除换行符以外的任意字符
      \w字母、数字或下划线
      \s空白字符(包括空格、制表符\t或\v、换页符\f和换行符\n
      \d数字
      \b单词的开始或结束
      ^字符串的开始
      $字符串的结束
    • 重复限定符

      语法说明
      *重复零次或更多次
      +重复一次或更多次
      ?重复零次或一次
      {n}重复n次
      {n,}重复n次或更多次
      {n,m}重复n到m次
    • 断言

      字符说明
      x(?=y)正向先行断言,匹配x仅仅当x后面跟着y
      (?<=y)x正向后行断言,匹配x仅当x前面是y
      x(?!y)负向先行断言,当x后面跟着y不匹配x
      (?<!y)x负向后行断言,仅当x前面是y不匹配x
    • 反义

      字符说明
      \W非字母、数字或下划线
      \S非空白字符
      \D非数字字符
      \B不是单词开头和结束
      [^X]除了x以外的任意字符
    • 其他

      符号说明
      ()分组
      \转义
      |
      &
      [0-9]数字0-9
      [A-Z]大写字母A-Z
      [a-z]小写字母a-z
      [\u4e00-\u9fa5]中文字符
      [^\x00-\xff]双字节字符
    • 正则表达式标志

    标志说明
    g全局搜索
    i不区分大小写搜索
    m多行搜索
    s允许.匹配换行符
    u使用Unicode编码的形式进行匹配
    y执行“粘性”搜索,匹配从目标字符串的当期位置开始,可以使用y标志
  3. 前端常用正则表达式

    传送门

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值