正则表达式零宽度正预测先行断言
看名字一脸懵逼,完全不知道这是什么鬼。先看看是什么样的
(?=exp)
它表示匹配exp前面的内容。
还是不太明白,到底是个啥,举个例子吧。[a-zA-Z]+(?=\d+)
表示的匹配数字前面的字母,比如,给定字符串abc123
,匹配的结果则为abc
,那么exp代表的是\d+
,而以外的[a-zA-Z]
的匹配结果则为abc
,这下看起来是不是清楚多了。
利用这个零宽断言,可以来实现一个千分位转换的小demo
const converPrice = (num) => {
if (!num) return '0.00'
let str = parseFloat(num).toFixed(2)
return str && str
.toString()
.replace(/(\d)(?=(\d{3})+\.)/g, ($0, $1) => {
return $1 + ','
})
}
输入converPrice('12121831.99')
,输出结果为12,121,831.99
。
如果您觉得本文对您有用,欢迎捐赠或留言~
- 本博客所有文章除特别声明外,均可转载和分享,转载请注明出处!
- 本文地址:https://www.leevii.com/?p=1492