CodeAshen's blog CodeAshen's blog
首页
  • Spring Framework

    • 《剖析Spring5核心原理》
    • 《Spring源码轻松学》
  • Spring Boot

    • Spring Boot 2.0深度实践
  • Spring Cloud

    • Spring Cloud
    • Spring Cloud Alibaba
  • RabbitMQ
  • RocketMQ
  • Kafka
  • MySQL8.0详解
  • Redis从入门到高可用
  • Elastic Stack
  • 操作系统
  • 计算机网络
  • 数据结构与算法
  • 云原生
  • Devops
  • 前端
  • 实用工具
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
  • Reference
GitHub (opens new window)

CodeAshen

后端界的小学生
首页
  • Spring Framework

    • 《剖析Spring5核心原理》
    • 《Spring源码轻松学》
  • Spring Boot

    • Spring Boot 2.0深度实践
  • Spring Cloud

    • Spring Cloud
    • Spring Cloud Alibaba
  • RabbitMQ
  • RocketMQ
  • Kafka
  • MySQL8.0详解
  • Redis从入门到高可用
  • Elastic Stack
  • 操作系统
  • 计算机网络
  • 数据结构与算法
  • 云原生
  • Devops
  • 前端
  • 实用工具
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
  • Reference
GitHub (opens new window)
  • CSS3浮动定位与背景样式

  • CSS动画

  • JS基础语法与表达式

  • 流程控制语句与数组

  • JS函数与DOM

  • 面向对象

  • 正则表达式

    • 01-正则表达式
      • 正则表达式的创建
      • 元字符
      • 方括号表示法
      • 量词
      • 修饰符
      • 正则表达式相关方法
      • 字符串相关方法
  • ES6基础入门

  • ES6语法扩展

  • Promise与Class

  • Module与Babel

  • 前端
  • 正则表达式
CodeAshen
2023-02-10
目录

01-正则表达式

# 什么是正则表达式

正则表达式(regular expression)描述了字符串的“构成模式”,经常被用于检查字符串是否符合预定的格式要求。

用一个例子快速演示正则表达式基本使用方法:检查某个字符串是否是 6 位数字。

image-20220724041608925

正则表达式"按位”描述规则,是指它是一位一位的描述字符串的构成形式。

比如检查字符串是不是这样的:以字母 m 开头,然后是 3 个数字,最后以字母 n 结尾。

image-20220724041815685

# 正则表达式的基本使用

# 正则表达式的创建

使用/内容/的语法形式,可以快速创建正则表达式 也可以使用 new RegExp('内容') 的形式,创建正则表达式公 使用 typeof 运算符检查正则表达式的类型,结果是 object

// 创建正则表达式方法1
var regexp1 = /^\d{6}$/;
// 创建正则表达式方法2
var regexp2 = new RegExp('^\\d{6}$');

var str = '555666';

console.log(regexp1.test(str));     // true
console.log(regexp2.test(str));     // true

console.log(typeof regexp1);        // object
console.log(typeof regexp2);        // object
1
2
3
4
5
6
7
8
9
10
11
12

# 元字符

元字符是指一位指定类型的字符

image-20220724042211138

元字符注意事项:

如果使用 new RegExp() 写法,反斜杠需要多写一个。比如 /\d$/ 和 new RegExp('^\\d$') 是相同的意思。

在特殊字符之前的反斜杠八表示下一个字符不是特殊字符,应该按照字面理解。

image-20220724042734044

不管一个符号有没有特殊意义,都可以在其之前加上一个以确保它表达的是这个符号本身。

# 方括号表示法

使用方括号,比如 [xyz],可以创建一个字符集合,表示匹配方括号中的任意字符。

比如某学校的学号规定:第 1 位是一个字母,b 表示本科生,y 表示研究生,后面是 7 位数字,用正则表示为:/^[by]\d{7}$/

可以使用短横 - 来指定一个字符范围,^ 表示否定

image-20220724043024515

# 量词

image-20220724043147975

# 修饰符

修饰符也叫作标志(flags),用于使用正则表达式实现高级搜索。

image-20220724043310420

修饰符的使用:

image-20220724043411880

# 正则表达式和字符串方法

# 正则表达式相关方法

image-20220724043459173

test() 方法已经使用过了,不多说了。exec() 方法就使用方式如下:

var str = 'abc123def456ghi789';
var regexp = /\d+/;
var result = regexp.exec(str);
1
2
3

image-20220724043949417

  • 第 0 项:查找结果
  • index:出现的位置
  • input:原始字符串
  • groups:分组

这里只超找到一个结果,因为没有使用 g 全局找找。exec() 方法最有趣的是,有 g 修饰符的正则表达式将自动成为“有状态”的,这意味着可以对单个字符串中的多次 匹配结果进行逐条的遍历。

image-20220724044908969

# 字符串相关方法

字符串有哪些方法可以使用正则表达式呢?

image-20220724045115958

var str = 'abc123def4567ghi89';

// search()方法,很像indexOf(),返回查找到的第一个下标,如果找不到就是-1
var result1 = str.search(/\d+/g);
var result2 = str.search(/m/g);
console.log(result1);       // 3
console.log(result2);       // -1

// match()方法,返回查找到的数组,找不到就是null
var result3 = str.match(/\d+/g);
console.log(result3);       // ["123", "4567", "89"]

// replace()方法,进行替换
var result4 = str.replace(/[a-z]+/g, '*');      // 注意+表示贪婪的,尽可能多的连续匹配小写字母
console.log(result4);       // *123*4567*89

// split()方法,进行字符串拆为数组
var result5 = str.split(/\d+/g);
console.log(result5);       // ["abc", "def", "ghi", ""]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
编辑 (opens new window)
上次更新: 2023/06/04, 12:34:19
02-继承与内置构造函数
01-初识ES6

← 02-继承与内置构造函数 01-初识ES6→

最近更新
01
第01章-RabbitMQ导学
02-10
02
第02章-入门RabbitMQ核心概念
02-10
03
第03章-RabbitMQ高级特性
02-10
更多文章>
Theme by Vdoing | Copyright © 2020-2023 CodeAshen | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式