基于模式的angularjs中的字符串替换

时间:2016-02-05 15:04:46

标签: angularjs

我正在尝试根据模式进行替换,但我收到了错误。

{{n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")}}

n是一个数字。

  

错误:[$ parse:lexerr] Lexer错误:出现意外的下一个字符   第36-36列[]表达式

1 个答案:

答案 0 :(得分:0)

angular可能很难在模板中内联该正则表达式,您可以将该替换语句放入范围内的辅助函数中:

$scope.convert = function(val) {
  return val.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}

然后在你的模板中调用该函数:

{{ convert(n) }} 

另一种选择是创建自定义过滤器:

app.filter('convert', function() {
  return function(input) {
    return input.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");  
  };
});

然后将您的值传递给该过滤器:

{{ n | convert }}