正则表达式

这篇博客介绍了正则表达式的基本概念和用法,包括正则的创建、匹配方法、元字符、字符集合、边界、分组、反向引用、数量词汇和匹配模式。学习者将能够理解正则中的基础知识,掌握如何使用正则进行查找和替换,并能在实际场景中应用。
摘要由CSDN通过智能技术生成

##正则表达式(Regular Expression)

课堂主题

​ 1)正则的创建

​ 2)正则的匹配方法

​ 3)元字符

​ 4)字符集合

​ 5)边界

​ 6)分组

7)反向引用

​ 8)数量词汇

​ 9)匹配模式


课堂目标

  • 理解正则中的基础知识
  • 理解正则中的各种概念
  • 会使用正则查找替换字符
  • 能使用正则在实际中运用

知识点

###字符串操作

  • 查找字符串中的数字;
  • 正则如何如实现

正则的创建

  • 字面量创建
  • 通过构造函数

正则的匹配方法

字符串方法

  • match
  • search
  • replace
  • split

正则对象下的方法

  • test
  • exec

元字符

  • 正则表达式中有特殊含义的非字母字符;

​ 字符类别(Character Classes)

  • .
    • 匹配行结束符(\n \r \u2028 或 \u2029)以外的任意单个字符
    • 字符集合(Character Sets) 中,. 将失去其特殊含义,表示的是原始值
  • \
    • 转义符,它有两层含义
      • 表示下一个具有特殊含义的字符为字面值
        • 表示下一个字符具有特殊含义(转义后的结果是元字符内约定的)
  • \d 匹配任意一个阿拉伯数字的字符
  • \D 匹配任意一个非阿拉伯数字的字符
  • \w 匹配任意一个(字母、数字、下划线)的字符
  • \W 匹配任意一个非(字母、数字、下划线)的字符
  • \s 匹配一个空白符,包括空格、制表符、换页符、换行符和其他 Unicode 空格
  • \S 匹配一个非空白符
  • \t 匹配一个水平制表符(tab)
  • \r 匹配一个回车符(carriage return)
  • \n 匹配一个换行符(linefeed)
  • \v 匹配一个垂直制表符(vertical tab)
  • \f 匹配一个换页符(form-feed)

字符集合

[xyz]

  • 一个字符集合,也叫字符组。匹配集合中的任意一个字符。你可以使用连字符’-'指定一个范围
  • [xyz] 是一个反义或补充字符集,也叫反义字符组。也就是说,它匹配任意不在括号内的字符。你也可以通过使用连字符 ‘-’ 指定一个范围内的字符

边界

  • ^
    • 匹配输入开始。如果多行(multiline)标志被设为 true,该字符也会匹配一个断行(line break)符后的开始处
  • $
    • 匹配输入结尾。如果多行(multiline)标志被设为 true,该字符也会匹配一个断行(line break)符的前的结尾处
  • \b
    • 匹配一个零宽单词边界(zero-width word boundary)
  • \B
    • 匹配一个非零宽单词边界(zero-width word boundary)

###分组

  • (子项)

    • 可以使用 () 对表达式进行分组,类似数学中分组,也称为子项
    • 索引分组
    • 命名分组
      • (?…)
      • groups属性
    • 捕获匹配
      • 具有捕获(capturing)特性,即会把匹配结果保存到(子项结果)中
      • (x)
    • 非捕获匹配
      • 不具有捕获(capturing)特性,即不会把匹配结果保存到(子项结果)中
      • (?:x)
    • 零宽断言/预查(Assertions)
      • 用于指定查找在某些内容(但并不包括这些内容)之前或之后的内容
      • 正向零宽断言/预查
        • 肯定
          • (?=pattern)
        • 否定
          • (?!pattern)
      • 负向零宽断言/预查(注意:ES2018新增)
        • 肯定
          • (?<=pattern)
        • 否定
          • (?<!patten)
    • 捕获与零宽断言的区别
      • 捕获:匹配的内容出现在结果中但不出现在子项结果中
      • 零宽断言:完全不会出现在结果

    反向引用

    • \n
      • 这里的 n 表示的是一个变量,值为一个数字,指向正则表达式中第 n 个括号(从左开始数)中匹配的子字符串

    数量词汇

    • x{n}
      • n 是一个正整数。前面的模式 x 连续出现 n 次时匹配
    • x{n,m}
      • n 和 m 为正整数。前面的模式 x 连续出现至少 n 次,至多 m 次时匹配
    • x{n,}
      • n 是一个正整数。前面的模式 x 连续出现至少 n 次时匹配
    • x*
      • 匹配前面的模式 x 0 或多次
    • x+
      • 匹配前面的模式 x 1 或多次。等价于 {1,}
    • x?
      • 匹配前面的模式 x 0 或 1 次
    • x|y
      • 匹配 x 或 y

    匹配模式

    • g

      • global,全局模式:找到所有匹配,而不是在第一个匹配后停止
    • i

      • ignore,忽略大小写模式:匹配不区分大小写
    • m

      • multiple,多行模式:将开始和结束字符(^和$)视为在多行上工作,而不只是匹配整个输入字符串的最开始和最末尾处
    • s

      • dotAll / singleline模式:. 可以匹配换行符
    • u

      • unicode,unicode模式:匹配unicode字符集

         console.log(/^.$/.test("\uD842\uDFB7"));
         console.log(/^.$/u.test("\uD842\uDFB7"));
        
    • y

      • sticky,粘性模式:匹配正则中lastIndex属性指定位置的字符,并且如果没有匹配也不尝试从任何后续的索引中进行匹配
  • 正则工具 http://regexper.com

总结

​ 1)正则的创建

​ 2)正则的匹配方法

​ 3)元字符

​ 4)字符集合

​ 5)边界

​ 6)分组

7)反向引用

​ 8)数量词汇

​ 9)匹配模式

正则表达式;["12312","2312"]
字符串里找到对应的数字;
let str = "fdsafd12312dfaf3443fds2312dafd1111";
方式一;
function getNumber(str){
   
    let arr = [];
    let temp = "";
    for(let i=0;i<str.length;i++){
   
        // console.log(typeof str[i]);
        if(!isNaN(str[i])){
   
            // console.log("数字");
            temp += str[i];
        }else{
   
            // console.log("非数字");
            if(temp!=""){
   
                arr.push(temp);
                temp = "";
            }
        }
    }
    if
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值