Skip to content

正则表达式

正则表达式是国际标准,跨越语言

正则表达式是一个规则,用于验证字符串。

基础

  1. 字面量匹配

规则中直接书写字面量字符

  1. 特殊字符
. // 匹配任意字符  
^ // 匹配字符串的开头
$  // 匹配字符串的结尾
  1. 转义符
\n // 匹配换行符
\r // 匹配回车符
\t // 匹配制表符
\s // 匹配空白字符
\S // 匹配非空白字符
\b // 匹配单词边界
\B // 匹配非单词边界
\d // 匹配数字字符
\D // 匹配非数字字符
\w // 匹配单词字符
\W // 匹配非单词字符
\u // 匹配Unicode字符

转义符可以将特殊字符转义

  1. 字符集
[字符范围]

匹配中文: [\u4e00-\u9FA5]

  1. 量词

前面的规则出现的次数

* // 匹配0个或多个
+ // 匹配1个或多个
? // 匹配0个或1个
{n}: 匹配n个 
{n,}: 匹配>=n个
{n,m}: 匹配n-m个

JS中的应用

js中,正则表达式表现为一个对象,该对象是通过构造函数RegExp

创建正则对象

  1. 字面量模式
  2. 构造函数模式
js
let reg = /规则字符串/;
let reg = new RegExp('规则字符串');

正则实例成员

  • global
  • ignoreCase
  • multiline
  • source
  • test方法:验证某个字符串是否满足规则
  • exec方法:execute,执行匹配,得到匹配结果。

正则表达式,默认情况下,适用贪婪模式 在量词后,加上?,表示进入非贪婪模式

字符串对象中的正则方法

  • split
  • replace
  • search
  • match

进阶

捕获组

用小括号包裹的部分叫做捕获组,捕获组会出现在匹配结果中

捕获组可以命名,叫做具名捕获组

非捕获组

反向引用

在正则表达式中,使用某个捕获组,\捕获组编号

正向断言(预查)

检查某个字符后面的字符是否满足某个规则,该规则不成为匹配结果,并且不称为捕获组

负向断言(预查)

检查某个字符后面的字符是否不满足某个规则,该规则不成为匹配结果,并且不称为捕获组

MIT License