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

angularjs中基于模式的字符串替换,angularjs,Angularjs,我试图根据一个模式进行替换,但我遇到了错误 {{n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")}} n是一个数字 错误:[$parse:lexerr]Lexer错误:出现意外的下一个字符 表达式中的第36-36[]列 angular可能很难将正则表达式内联到模板中,您可以将replace语句放入作用域上的helper函数中: $scope.convert = function(val) { return val.toString().r

我试图根据一个模式进行替换,但我遇到了错误

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

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


angular可能很难将正则表达式内联到模板中,您可以将replace语句放入作用域上的helper函数中:

$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 }} 

尝试在作用域函数中执行replace,并使用
ngbindhtml
而不是
{}
表示法。