正则表达式快速上手

1.限定符(出现次数)

?:  0 1 (可有可无)

+:  1 n

*:  0 1 n

{}:指定出现次数

{2}  出现2次

{2,5}  2-5次

{2,}  2次以上

以上是单个字符匹配,多个匹配只需要用()把多个字符包裹起来即可

2.或匹配

|: 同时匹配多个内容

示例:a (dog|pig)  ,同时匹配a dog 或者a pig 这两个短语

3.限定内容

[]: 内容只能由[]里的字符组成

示例:[abc],只能由abc三个字母中的任意个组成,[a-z],只能由a-z中的任意字母的任意个数组成

4.取反匹配(在[]中生效)

^: 除后面字符以外的字符

示例:[^0-9], 只能由0-9数字以外的任意字符组成,也就是非数字字符(包含换行符)

5.元字符(预设)

\d:数字字符,等同于[0-9]

\w:单词字符(英文、数字、下划线)

\s:空白符(包含tab和换行符)

大写取反
\D:非数字字符

\W:非单词字符

\S:非空白字符

6.特殊字符

.:英文句号,表示任意字符(换行符除外)

^:只匹配行首
示例:^a,apple √  basic ×

$:只匹配行尾
示例:b$,club √  black ×

7.贪婪匹配与懒惰匹配

示例:匹配html标签 <span><b>abcdef</b></span>

<.+>:会直接匹配一整行,从第一个<到最后一个>,贪婪匹配,匹配尽可能多的内容

<.+?>:加上?后由贪婪匹配改为懒惰匹配,只匹配尽可能少且满足表达式的内容

8.字符边界(全字匹配)

内容:
#00
#aaffbb
#ffffff
#hhggaa
#ffffffff

匹配16进制
表达式1:/#[0-9a-fA-F]{6}/    匹配内容:#aaffbb #ffffff #ffffffff
表达式2:/\b#[0-9a-fA-F]{6}\b/  匹配内容:#aaffbb #ffffff

加入\b控制字符边界,只能包含指定数量字符,不能多也不能少(不能截取),相当于vscode中的全字匹配

9.零宽正向肯定前瞻/后瞻

用于指定某些条件必须存在但不包含在匹配结果中,简单来说就是我想匹配内容中包含这一部分但又不需要拿到这一部分

例如,我要qq邮箱号中的qq号,1637891172@qq.com,先这样写:/\b[0-9]{5,13}@qq.com\b/,但是这样会带上邮箱后缀:1637891172@qq.com

使用前瞻写法就可以在匹配qq邮箱的同时去掉后缀:/\b[0-9]{5,13}(?=@qq.com)\b/:1637891172

前瞻:(?=pattern) 写在后面
后瞻:(?<=pattern) 写在前面

const text = "The quick brown fox jumps over the lazy dog.";

// 使用正向肯定前瞻
const lookaheadRegex = /\b\w+(?=[\s.,!?])/g;
console.log(text.match(lookaheadRegex)); // ["The", "quick", "brown", "fox", "jumps", "over", "the", "lazy"]

// 使用正向肯定后瞻
const lookbehindRegex = /(?<=\b\w+\s)over\b/g;
console.log(text.match(lookbehindRegex)); // ["over"]

辅助网站

regex-cn.com

regex-vis.com

regex101.com

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值