[基础 18_001] 正则表达式基础

文本字符

字符 匹配内容
字母字符 本身
\0 NULL 字符(\u0000)
\t Tab 制表符(\u0009)
\n 换行(\u000A)
\v 垂直制表符(\u000B)
\f 换页符(\u000C)
\r 回车(\u000D)
\xFF 由两位十六进制数转义为拉丁字母,比如 \x0A 相当于 \n
\uFFFF 由四位十六进制数转义为 Unicode 字符,比如 \u0009 相当于 \t

1. 一些标点符号在正则表达式中由特殊的意义:

^ $ . * + ? = ! : | \ / ( ) [ ] { }

要想匹配上述字符,需要用 \ 转义
2. 如果记不住哪些标点符号由特殊意义,那么就在所有标点符号前放置 \ 进行转义。要匹配 \ ,用 \ 转义。

字符类

将字面值字符放进方括号内就组成了字符类。

字符 匹配内容
[…] 在方括号内的任意一个字符
[^…] 任意一个不在方括号内的字符
. 除换行或其它 Unicode 行终止符之外的任意字符
\w 任意 ASCII 字符,等价于 [a-zA-Z0-9_]
\W 任意非 ASCII 字符,等价于 [^a-zA-Z0-9_]
\s 任意 Unicode 空白字符
\S 任意非 Unicode 空白字符,注意 \w 和 \S 不同
\d 任意 ASCII 数字,等价于 [0-9]
\D 任意非 ASCII 数字字符,等价于 [^0-9]
[\b] 退格,只有作为字符类单独元素才表示退格,否则有特殊含义

重复

字符 匹配内容
{n,m} 匹配前面条目至少 n 次,最多 m 次
{n,} 匹配前面条目 n 次以上
{n} 匹配前面条目正好 n 次
? 匹配前面条目出现 0 次或 1 次,相当于 {0,1}
+ 匹配前面条目 1 次以上,相当于 {1,}
* 匹配前面条目 0 次或 多次,相当于 {0,}

1. 上表中的匹配是尽可能多地匹配,而且允许后续正则表达式继续匹配,称之为”贪婪匹配”。a+ 匹配 “aaa”,会匹配三个字符
2. 我们可以使用非贪婪匹配,只需要在后面跟随一个 ? 号即可:“??”, “+?”, “*?”, “{1,5}?”。a+? 匹配 “aaa”,只匹配第一个 a

选择,组合和引用

字符 含义
| 选择,匹配左边的子表达式或右边的子表达式
(…) 组合,将多个项目组合成为一个单元,可以对该单元使用 *, +, ?,
(?:…) 只组合,将多个项目组合为一个单元,但是所匹配的子字符串不创建引用
\n 引用,代表组号为 n 的组合所首次匹配的子字符串,组号是按从左往右计算
左括号出现的顺序而得出的,(?: 格式的组合不被标记组号

指定匹配位置

字符 含义
^ 匹配字符串的开头,在多行查找中,匹配行首
$ 匹配字符串的结尾,在多行查找中匹配行尾
\b 匹配单词边界,匹配 \w 和 \W 之间或者 \w 和 字符串的开头或结尾
之间的位置(然而,[\b]匹配退格)
\B 匹配不是单词边界的位置
(?=p) 一个积极先行断言,要求接下来的字符串匹配模式 p,
但是并不将这些字符串包含在匹配中
(?!p) 一个消极先行断言,要求接下来的字符串不匹配模式 p

标记

字符 含义
i 忽略大小写
g 全局匹配,找到所有匹配而不是在第一个匹配处停止
m 多行模式,^ 匹配行首或字符串开头,$ 匹配行尾或字符串结尾

参考资料

[1] (JavaScript: The.Definitive.Guide).David.Flanagan “JavaScript 权威指南-第六版”

猜你喜欢

转载自blog.csdn.net/buildcourage/article/details/80161287