JavaScript正则之“后行断言” (?<=[\d])

319 阅读1分钟

前言

关于正则的文章以后会逐渐整理成合集,之前对正则的使用场景很少,主要也是了解的少,业务场景能使用到正则的机会很多,而且能减少代码量,好吧,开始~

后行断言

合集的第一篇,就是关于后行断言,什么意思呢?

(?<=[\d]): 指从某一数字(不含该数字)向后(即从右到左)检索,换句话说从末尾开始检索。

const reg_examples = /(?<=\$)foo/g
'$foo #foo %foo'.replace(reg_examples, 'bar')
// 以上代码的执行顺序是,先匹配foo,然后再匹配$,“先右后左”

千分位分隔符

千分位是一个常用的场景了,可以利用后行断言来实现它。

const num = '123456789.121'
const reg = /(?<=[\d])(?=(\d{3})+(?![\d]))/g
var newNum = num.replace(reg, ',')

// res  '123,456,789.121'

?=(\d{3})+,中的+,如果没有,就只会匹配一次,变成'123456,789.121'

上面的正则只是后行断言应用到的场景之一

其他

?= 匹配任何其后紧接指定字符串 n 的字符串

?!n匹配任何其后没有紧接指定字符串 n 的字符串`

结尾

正则还挺奇妙的,虽然用一段js代码也能实现,但是用正则不是更优雅吗,哈哈哈