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

本文详细介绍了正则表达式的各种元素及其用法,包括特殊字符、字符类、重复、选择与组合等内容,并解释了如何使用正则表达式来指定匹配位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文本字符

字符匹配内容
字母字符本身
\0NULL 字符(\u0000)
\tTab 制表符(\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 权威指南-第六版”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值