如何在两个数字之间加点?

时间:2019-08-01 14:17:46

标签: javascript angularjs regex

我正在尝试在两个数字之间添加一个点。这与商品编号有关,目前它们就像XXXXX或XXXXXX,现在应该是XXX.XX或XXX.XXX,我不知道。

商品编号很多,因此会自动从数据库中加载。现在是99-87503或99-400031,从现在开始应该是99.875.03或99.400.031。

我尝试指定数字,过滤器和模式,但都不起作用。

当前AngularJs代码:

<div class="status">
    99.{{Manipulated()}} | 
    <p ng-model="Manipulated"
       class="rwd-info-msg {{Manipulated.cssClass}}">
      {{Manipulated.text}}
    </p>
</div>

此99.只是每个商品编号的前缀。

我对AngularJS来说还很陌生,因此可以提供任何帮助。

3 个答案:

答案 0 :(得分:3)

您可以做的天真

var num = 9876543;
var res = num.toString().replace(/^(\d{3})(.*)/ig, '$1.$2');

console.log(num, '->', res);

在这里,(\d{3})部分捕获前3位数字,而(.*)部分捕获其余3位数字。
然后,您可以使用$1访问每个部分以获取第一个捕获的组,并使用$2访问第二个捕获的组。

我确信有更好的解决方案,但这是一个起点。

答案 1 :(得分:2)

此表达式

(?<=^[0-9]{3})

.替换也可以。

const regex = /(?<=^[0-9]{3})/g;
const str = `9876544`;
const subst = `.`;

const result = str.replace(regex, subst);

console.log(result);

该表达式在regex101.com的右上角进行了解释,如果您想探索/简化/修改它,在this link中,您可以观察到它如何与某些示例输入匹配,如果你喜欢。

答案 2 :(得分:1)

AngularJS的实现方式是创建自定义filter

app.filter('addDot', function() {
  return function(number) {
    return number.toString().slice(0,3) + number.toString().slice(3);
  };
})

并在您的模板中使用它,例如:

<div class="article-status">
    99.{{getManipulatedArticle(article).artnr | addDot}} </p>
</div>