正则表达式零宽度正预测先行断言

该文章发布于 ,归类于 Javascript

看名字一脸懵逼,完全不知道这是什么鬼。先看看是什么样的

 (?=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

相关文章