JS 正则表达式解题:用科学计数法表示数字

题目:给定字符串 str = “1000000000”,用科学计数法表示该式(效果为:1,000,000,000)

正则表达式用来匹配特殊字符,在此题中可以考虑:从字符串的末位开始,每当位数是三的倍数,则添加一个逗号。

思路:

  • 从字符串末位开始匹配 --> 以$结尾表示匹配输入结束前的位置
var reg =/...$/
  • 位数为3的倍数 --> 表示长度为三且内容为[0-9]区间内的数字,出现次数未知,加上"+",表示匹配前面表达式[1-infinity]次
reg = /(\d{3})+/
  • 添加"," --> 将空串替换为逗号
>str.replace(reg, ",")
  • 注意:若字符串长度刚好为三的倍数,以上方式会在字符串前面加上逗号,为避免这种情况,可以通过匹配非单词边界来过滤
reg = /(\B)(\d{3}+$)/
  • 给数字添加逗号,我们要匹配的是到末位位数为3的倍数的空串,将其替换为逗号,因此,上面的匹配属于先行断言的条件。即:匹配后面字符为 / r(\B)(\d{3}+4) / 模式的空串,再加上全局范围
reg = / ?=(\B)(\d{3}+$) /g

最终代码如下:

    var str = "1000000000";
    var reg = /(?=(\B)(\d{3})+$)/g;
    console.log(str.replace(reg, ","));

你可能感兴趣的:(JS,正则表达式,js,javascript)