正则表达式回顾

说明

  • 最近的业务正则较多,特此回顾一下基本用法
  • 适用于 正则表达式的有经验的朋友。

匹配任意字符


let reg = /a../g;
reg.test('aqw'); //true

复制代码

匹配字母和数字

let reg = /\w/g;
reg.test('1231qwesadFSD');
//true
//匹配所有的数字和大小写字母

let regNumber = /\d/g;
regNumber.test('31241320');
//true
// 匹配所有的数字

// \D 和 \W 就是补集
复制代码

集合和匹配多个


//目标匹配 ‘yo,Yo,yO’ 
let bad = /yo/g;
let reg = /[Yy][Oo]+/g;
reg.test('Yo'); // true
reg.test('yO'); // true
//集合的重要性
复制代码

单词边界

  • \b

let reg = /yo{1,4}\b/;
reg.test('yo'); // true
reg.test('yoo'); // true
reg.test('yooo'); // true
reg.test('yooooooooooo'); // false 因为单词边界
复制代码

分组

  • $1 $2 的使用 replace 的使用

let reg = /(ad)..(cd)/g;
'adqwcd'.replace(reg,'$1 123 -- $2')
// ad 123 -- cd

复制代码

匹配不捕获

  • 这样的话第一组就会 undefined,第二组变成第一组。只匹配不捕获分组

let reg = /(?:ad)..(cd)/g;
'adqwcd'.replace(reg,'$1 123 -- $2')
// cd 123 -- undefined

复制代码

正向预查(匹配右边)和反向预查(匹配左边)

  • 未做详细的解释,大家可以查阅详细的资料

// 100元
// 1000元
// 100刀
// 1000镑
let reg = /\d+(?=元)/


let reg = /(?<=¥|\d)\d+/
// ¥100
// $ 100
// 

复制代码

速查表

符号描述例子能匹配不能匹配
^行首或字符串开始^yoyoayo
$行末或字符串结束yo$yoyop
\b单词边界\byo\bmu yo mumuyomu
\B非单词边界\Byo\Bmuyomumu yo mu
符号描述例子能匹配不能匹配
(?=xxx)正向肯定预查,从任何匹配xxx的字符串开始处匹配查找字符串yo(?=o)yooyo
(?!xxx)正向否定预查,从任何不匹配pattern的字符串开始处匹配查找字符串yo(?!o)yoyoo
(?<=xxx)反向肯定预查,与正向肯定预查类拟,只是方向相反(?<=y)oyoyoo
(?<!xxx)反向否定预查,与正向否定预查类拟,只是方向相反(?<!goo)dmoodgood
符号描述例子能匹配不能匹配
[ ]字符集合[ace]a, c, ed
[ - ]字符范围[a-c]a, b, cd
[^ ]不包含的字符集合[^abc]d, ea, b, c
.匹配除断行外的任何字符yo.yoo, yop, yohyo
\s空白字符,等于[\n\r\f\t ]la\slala lalala
\S非空白字符,等于[^\n\r\f\t]la\slalalala la
\d数字\d{2}231a
\D非数字\D{3}yoo, abcyo1
\w单词,等于[a-z-A-Z0-9_]\w{4}v123v12.3
\W非单词,等于[^a-z-A-Z0-9_].$%?.$%?.ab?
特殊字符描述
\n断行
\r回车符
\t制表符
\v垂直制表符
\f换页
[\b]退格
符号描述例子能匹配不能匹配
|或,其一a|ba, bc
(xxx)匹配xxx并获取这一匹配yo(o|p)yoo 或 yopyoh
(?:xxx)匹配xxx但不获取这一匹配y(?:o)yoya
+重复1次或多次yo+yo, yoooy
*重复0次或多次yo*y, yooyop
?出现0次或1次yo?y, yoye
???的懒惰模式,尽可能少匹配yoo??yoyoo
+?+的懒惰模式yo+?yoyoo
*?*的懒惰模式yo*?yyo
{n}重复n次yo{2}yooyooo
{n,m}重复n到m次yo{1, 3}yo,yoooyoooo
{n,}重复至少n次yo{2,}yoo, yoooyo
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值