正则案例解析【一】

数字格式化

let test1 = '1234567890'
let format = test1.replace(/(?=(\d{3})+(?!\d))/g, ',')
//(?=(\d{3})+  3的倍数的长度左侧间隙
//间隙右侧不能为数字

\B匹配非单词边界;
\d匹配一个数字;
+是量词,表示前面的内容重复1到多次
?=是预言,表示这个位置后面的内容需要满足的条件,注意只是匹配一个位置,并不匹配具体的字符,所以是零宽;
?!也是预言,表示这个位置后面的内容不能满足的条件,注意也只是匹配一个位置,并不匹配具体的字符,所以也是零宽;

\d{3}匹配三个数字,+表示前面的内容重复1到多次,所以(\d{3})+表示三个数字的1到多次,也就是3,6,9…等3的倍数个数字的字符串;
(?!\d)匹配一个位置,这个位置后面不是数字
(?=(\d{3})+(?!\d))匹配一个位置,这个位置后面首先是3的倍数个数字的字符串,接下来的位置不是数字
/\B(?=(\d{3})+(?!\d))/g就是全局匹配一个位置,这个位置是非单词边界,然后后面是3的倍数个数字,然后是非数字。
在这里插入图片描述
规则A 右边是3n个数字,n>=1
匹配完之后,后面接一个非数字间隙

在这里插入图片描述

(?=\w{3}(?!\d))
33453435345489
33453435345-489

同理

33453435345489
(?=3)
-3-345-34-35-345489

(?=3(?!4))
同时满足
空隙1右边为3
紧接着3之后的空隙2的右边不是4

==》空隙1右边为3
紧接着3之后不是4

((?=0)|(?=2))
111110211111111
11111-0-211111111


?=  +  ?!【终止标志】
11111021111111111111
((?=(\w{10})(?!\d)))
1111102111-1111111111


?=  +  ?= 
11111021115111111111
((?=(\w{10})(?=5)))
-11111021115111111111

?! + ?!


两个条件  1个间隙
\b\s+\b
去除中间空格

\b是边界 非空字符的边缘间隙

取字符串中间夹得数字
(?=\d)\d+(?=[a-zA-Z])
【左边条件间隙有6个】【右边条件间隙9个】
右边是数字的间隙+间隙右边是数字+数字右边是右边是字母的间隙
但是会匹配到最左侧的数字

(?=\s)\s+(?=\d)
会匹配到左侧的空格
在这里插入图片描述

替换字符右侧的数字【不取结尾间隙的数字】

(?=\d)\d+

替换空格右侧的空格【不取结尾间隙的空位符号】

(?=\s)\s+

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值