正则表达式

84 篇文章 3 订阅

正则表达式(Regular Expression)

正则工具  http://regexper.com

1.主要知识点及学习目标

## 知识点

  1. 正则的创建
  2. 正则的匹配方法
  3. 元字符
  4. 字符集合
  5. 边界
  6. 分组
  7. 反向引用
  8. 数量词汇
  9. 匹配模式

## 学习目标

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

2.字符串操作

- 查找字符串中的数字;

- 正则如何如实现

 

3.正则的创建

-  字面量创建

- 通过构造函数

 

4.正则的匹配方法

4.1字符串方法

  1. match()
  2. search()
  3. replace()
  4. split()

 

4.2正则对象下的方法

  1. test()
  2. exec()

 

5.元字符

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

​ 字符类别(Character Classes):

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

 

6.字符集合

[xyz]

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

 

7.边界

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

 

8.分组

(子项)

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

 

9.反向引用

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

 

10.数量词汇

  • 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

 

11.匹配模式

  • 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属性指定位置的字符,并且如果没有匹配也不尝试从任何后续的索引中进行匹配

 

12.总结

  1. 正则的创建
  2. 正则的匹配方法
  3. 元字符
  4. 字符集合
  5. 边界
  6. 分组
  7. 反向引用
  8. 数量词汇
  9. 匹配模式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值