2016-02-05 16 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 }}