2016-02-05 17 views
0

我想基于模式进行替换,并且出现错误。基于模式替换angularjs中的字符串

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

n是一个数字。

Error: [$parse:lexerr] Lexer Error: Unexpected next character at columns 36-36 [] in expression

+0

试着做了替换一个范围的功能和使用'NG绑定 - html',而不是'{{}}'符号。 –

回答

0

的角度可能是有困难的时间与该正则表达式的模板是线上,你可以把那个替代语句转换成一个辅助函数的范围:

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