XingYun blog
  • JS基础

    • 图解js原型链
    • JS Event Loop
    • 对象的底层数据结构
    • 让你的JavaScript代码简单又高效
    • 函数参数按值传递
    • 判断数据类型
    • 浮点数精度问题和解决办法
    • 常用方法snippet
    • 实现Promise
    • 防抖和节流
    • 巧用sort排序
  • CSS && HTML

    • CSS也需要性能优化
    • class命名规范
    • em、px、rem、vh、vw 区别
    • CSS揭秘阅读笔记
  • 浏览器

    • 浏览器是如何渲染页面的
    • 重排和重绘
    • BOM浏览器对象模型
    • DOM事件
    • 浏览器存储
  • 数据结构

    • JS实现链表
    • JS实现栈与栈应用
    • JS实现常见排序
    • 哈夫曼编码
    • MD5算法
  • vue原理浅析

    • Vue虚拟dom与Diff算法
    • 前端打包文件的缓存机制
    • vue数组为什么不是响应式
    • v-for为什么不能用index做key
  • 前端工程化

    • 浏览器是如何渲染页面的
    • 前端打包需要gzip压缩吗
    • 前端打包文件的缓存机制
    • webpack loader和plugin
  • 轮子&&组件库

    • 实现水波浪进度球
  • 文字转语音mp3文件
  • 文件上传前后端实现
  • moment.js给定时间获取自然月、周的时间轴
  • 实现文件上传功能
  • 批量下载照片
  • leaflet改变坐标原点
  • 网络

    • 有了MAC地址 为什么还需要IP地址
    • 为什么IP地址老是变
    • 我们为什么需要IPV6
    • TCP与UDP
  • 计算机组成原理

    • ASCII、Unicode、UTF-8和UTF-16
  • VSCode

    • VSCode图片预览插件 Image preview
    • rsync:linux间的高效传输工具

XingYun

冲!
  • JS基础

    • 图解js原型链
    • JS Event Loop
    • 对象的底层数据结构
    • 让你的JavaScript代码简单又高效
    • 函数参数按值传递
    • 判断数据类型
    • 浮点数精度问题和解决办法
    • 常用方法snippet
    • 实现Promise
    • 防抖和节流
    • 巧用sort排序
  • CSS && HTML

    • CSS也需要性能优化
    • class命名规范
    • em、px、rem、vh、vw 区别
    • CSS揭秘阅读笔记
  • 浏览器

    • 浏览器是如何渲染页面的
    • 重排和重绘
    • BOM浏览器对象模型
    • DOM事件
    • 浏览器存储
  • 数据结构

    • JS实现链表
    • JS实现栈与栈应用
    • JS实现常见排序
    • 哈夫曼编码
    • MD5算法
  • vue原理浅析

    • Vue虚拟dom与Diff算法
    • 前端打包文件的缓存机制
    • vue数组为什么不是响应式
    • v-for为什么不能用index做key
  • 前端工程化

    • 浏览器是如何渲染页面的
    • 前端打包需要gzip压缩吗
    • 前端打包文件的缓存机制
    • webpack loader和plugin
  • 轮子&&组件库

    • 实现水波浪进度球
  • 文字转语音mp3文件
  • 文件上传前后端实现
  • moment.js给定时间获取自然月、周的时间轴
  • 实现文件上传功能
  • 批量下载照片
  • leaflet改变坐标原点
  • 网络

    • 有了MAC地址 为什么还需要IP地址
    • 为什么IP地址老是变
    • 我们为什么需要IPV6
    • TCP与UDP
  • 计算机组成原理

    • ASCII、Unicode、UTF-8和UTF-16
  • VSCode

    • VSCode图片预览插件 Image preview
    • rsync:linux间的高效传输工具
  • VSCode图片预览插件 Image preview
  • Linux服务器
  • 记录git使用
  • mac终端
  • 代理
  • nginx部署网站
  • CDN与对象存储-七牛云
  • rsync:linux间的高效传输工具
  • 正则表达式
    • yarn
    • Alfred
    • npm
    • vim编辑器基础
    • docker部署node服务
    • lux一行命令下载全网视频
    • Chrome-Tips
    • 工具
    XingYun
    2022-01-30
    目录

    正则表达式

    正则表达式作为一门不受编程语言限制且用途很广的技术,花时间去深入理解并融会贯通是值得的。

    网上有许多正则的用法介绍,我就不重复了

    我想从学习一门编程语言的角度,浅析一下正则的学习过程

    # 一、‘基础数据类型’

    我们学习一个系统化的知识,一定要从其基础构成来了解。 就像我们学习一门编程语言,需要先了解语言的基础数据类型。

    正则表达式的基本组成元素可以分为:字符和元字符。

    字符很好理解,就是基础的计算机字符编码,通常正则表达式里面使用的就是数字、英文字母。

    而元字符,也被称为特殊字符,是一些用来表示特殊语义的字符。如^表示非,|表示或等。

    利用这些元字符,才能构造出强大的表达式模式(pattern)

    # 第一个元字符

    如果想在'apple'这个单词里找到‘a'这个字符,就直接用/a/这个正则就可以了。

    但是如果想要匹配特殊字符的话,就得用上第一个元字符\, 它是转义字符字符,顾名思义,就是让其后续的字符失去其本来的含义。

    我想匹配这个符号,由于这个符号本身是个特殊字符,所以我要利用转义元字符\来让它失去其本来的含义:

    /\*/
    
    1

    # 特殊字符

    如果本来这个字符不是特殊字符,使用转义符号就会让它拥有特殊的含义。

    我们常常需要匹配一些特殊字符,比如空格,制表符,回车,换行等, 而这些就需要我们使用转义字符来匹配。下面上表格,并附上记忆方式:

    # 匹配某种集合

    上面都是介绍的怎么匹配单个字符,单个字符的映射关系是一对一的, 那么如果想匹配一类字符,实现一对多的映射呢? 比如0-9某个数字,a-z字母等

    正则表达式也提供了

    # 二、‘循环与流程控制’

    我们学习一门编程语言,了解了数据类型后,一般下一步需要学习循环与流程控制

    编程语言里要循环一般用for语句,而正则里一般有几种方式

    # 循环元字符

    例:我想匹配王冰冰 或者 冰冰,那么我需要用 /王?冰冰/ 这个正则

    # 指定特定次数

    例:'a'我想匹配3次,那么我就使用/a{3}/这个正则,或者说'a'我想匹配至少两次就是用/a{2,}/这个正则。

    # 或

    采用 | 元字符

    A|B可以匹配A或B,所以(P|p)ython可以匹配'Python'或者'python'。

    掘金 正则 (opens new window)

    上次更新: 2023/04/05, 09:41:10
    rsync:linux间的高效传输工具
    yarn

    ← rsync:linux间的高效传输工具 yarn→

    最近更新
    01
    JavaScript-test
    07-20
    02
    二维码的原理
    07-20
    03
    利用ChatGPT优化代码
    07-20
    更多文章>
    Theme by Vdoing | Copyright © 2021-2023 XingYun | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式