其他|正则—让代码更简洁(千分位方法改写)

最近觉得正则表达式的语法表达又有些记不住了,所以又把语法表又双叒叕拿出来温故知新了。然后在重新整合项目中以前遗留下的代码时我看到了一个处理千分位的方法封装如下:
原有方法:

var iValue = https://www.it610.com/article/num var sValue = iValue +'' var aValue = https://www.it610.com/article/[] var iNum = sValue.length % 3 var aResult var index = 0 if (sValue.length <= 3) { return iValue } else { if (iNum === 0) { for (var i = 0; i < sValue.length; i = i + 3) { aValue[index] = sValue[i] +'' + sValue[i + 1] + '' + sValue[i + 2] index++ } } else if (iNum === 1) { aValue[0] = sValue[0] index = 1 for (var j = 1; j < sValue.length; j = j + 3) { aValue[index] = sValue[j] + '' + sValue[j + 1] + '' + sValue[j + 2] index++ } } else if (iNum === 2) { aValue[0] = sValue[0] + '' + sValue[1] index = 1 for (var k = 2; k < sValue.length; k = k + 3) { aValue[index] = sValue[k] + '' + sValue[k + 1] + '' + sValue[k + 2] index++ } } if (country === 'Indonesia') { aResult = aValue.join('.') } else { aResult = aValue.join(',') } return aResult.toString() }

【其他|正则—让代码更简洁(千分位方法改写)】嗯,觉得代码有点繁杂亢余,可以改进改进,或者用下刚好可以拿出手的正则来处理以下
首先我们根据处理千分位的要求来进行分析:
  1. 首先处理的对象由纯数字组成;
  2. 每隔三个数字用逗号进行分割;
  3. 数字首末不应存在逗号;
根据以上三点着手将此方法改为正则处理:
let num = '1234567890' // 假设有数字 1234567890 那么我们最终想要得到千分位处理后的结果应为1,234,567,890 // (?!^):防止首位出现‘,’ // \d{3}+$:每三位数字和匹配结束的最后三位数字 ///g: 全局匹配 因此得到 --> /(?!^)(?=(\d{3})+$)/g let regex = /(?!^)(?=(\d{3})+$)/g //对匹配的位置进行替换 let result = num.replace(regex, ',') console.log(result) // '1,234,567,890' //我们可以简写成: let result = num.replace(/(?!^)(?=(\d{3})+$)/g,',')

所以使用正则后重新封装的方法比原有的方法是不是更加简洁了呢!简直nice~
得证:结果只有一个但是方法却有很多种,因此我们要在不断的学习中充实自己的技能包,用最简洁的方法去高效地得到正确的结果。

    推荐阅读