概述

  • 正则表达式包括普通字符(例如 a 到 z 、0 到 9、标点符号等的所有非元字符)和特殊字符元字符
  • 正则表达式描述、匹配一系列符合某个句法规则字符/字符串
  • 加转义符号\把元字符变为普通字符

例如:

  1. 今天天气真+好,匹配今天天气真好今天天气真好好今天天气真好坏好 等,+ 为元字符,代表前面的字符串必须至少出现一次(1次或多次)。
  2. 今天天气真*好,匹配 今天真好今天天气真好等,* 代表前面的字符串可以不出现,也可以出现任意次(0次、1次或多次)。
  3. colou?r ,匹配 colorcolour 等,? 代表前面的字符串最多出现一次(0次或1次)。

元字符

符号 匹配的字符
[ABC] 字符A、B、C
[^ABC] 非A、B、C
[A-Z] 区间A到Z内的字符
[A-Za-z0-9_] 3个区间加一个下划线之内的字符
. 除换行符外的所有字符。等价于[^\n\r]
\s 所有空白符(非打印字符)
\S 非空白符
[\s\S] 所有字符
\w 字母数字下划线。等价于 [A-Za-z0-9_]
\b 单词边界,即单词与空格连接处。例如,er\b 匹配 never 的 er,不匹配 verb 的 er
\B 非单词边界。er\B 匹配 verb 的 er,不匹配 never 的 er
{n} n 为非负整数,匹配确定的 n 次。o{2} 不匹配Bob 中的 o,匹配 food 中的 oo
{n,} n 为非负整数,至少匹配 n 次
{n,m} n,m 为非负整数。n<=m:至少匹配 n 次,至多匹配 m 次

修饰符(标记)

位于正则表达式外
格式:/pattern/flags
例:/正则表达式/g表示查找字符串中所有的匹配项。

修饰符 含义 描述
i ignore 不区分大小写
g global 全局匹配
m multiline 多行匹配,使边界字符^和$匹配每一行的开头和结尾
s 使特殊字符.包含换行符

实例

/\b[\w.%+-]+@[\w.-]+\.[a-zA-Z]{2,6}\b/g
匹配字符串 “abcd test@email.com 1234”
中的网址:”test@email.com

优先级

优先级 运算符 描述
0 | 转义符
1 ( ) , [ ] 圆括号和方括号
2 * , + , ? , {n} , {n,} , {n,m} 限定符
3 ^ , $ , 任何字符 位置和顺序

匹配规则

①基本模式匹配

模式,一组描述字符串特征字符,是正则表达式最基本的元素

例如:模式^once 包含一个元字符^,表示该模式只匹配以once开头的字符串。
该模式与字符串once upon a time匹配,与There once was a man不匹配。

②字符簇

字符簇是一种更自由地描述模式的方法。

  • 例1,[AaEeIiOoUu]是一个表示所有元音字符的字符簇。
  • 例2,用模式^[a-z][0-9]$匹配z2t6g7,而不是ab2r2d3b52
  • 例3,模式^.5$与任何两个字符的以数字5结尾以非"换行"字符开头的字符串匹配。

③确定重复出现

  • 元字符?{0,1}是相等的,它们都代表0个或1个前面的内容前面的内容是可选的
  • *{0,}是相等的,都代表 0 个或多个前面的内容
  • +{1,}是相等的,表示 1 个或多个前面的内容