如何在angularJs表达式中使用该正则表达式?

如何在angularJs表达式中使用该正则表达式?,angularjs,regex,Angularjs,Regex,这里有一个带空格的字符串,我想将空格替换为一个破折号“-” var card = "A World Elite Warrior"; console.log("card = " + card.toLowerCase().replace(/ /g,'-')); 输出是一个-world-elite-warrior,但我只想在html模板中将其用作angularjs表达式,如下所示: <img ng-src="images/cards/{{card.toLowerCase().replace(

这里有一个带空格的字符串,我想将空格替换为一个破折号“-”

var card = "A World Elite Warrior";

console.log("card = " + card.toLowerCase().replace(/ /g,'-'));
输出是一个-world-elite-warrior,但我只想在html模板中将其用作angularjs表达式,如下所示:

<img ng-src="images/cards/{{card.toLowerCase().replace(/ /g,'-')}}.png"

并且无法工作,错误消息为:

错误:[$parse:syntax]语法错误:标记“/”不是主标记 表达式的第61列中的表达式


AngularJS在视图中不支持正则表达式。为了解决这个问题,您可以编写一个简单的过滤器来应用您的正则表达式替换。下面是一个例子,说明在您的案例中您可能如何做到这一点

angular.module('app',[])
.controller('ctrl',函数($scope){
$scope.card=“世界精英战士”;
log(“card=“+$scope.card.toLowerCase().replace(//g,'-'));
})
.filter('破折号',函数(){
返回函数(输入){
输入=输入| |“”;
返回input.toLowerCase().replace(//g,'-');
}
});

{{卡片|破折号}

另一种方法是创建执行正则表达式的$scope函数。然后,您只需从视图中调用函数:

$scope.cardChange = function() {
    return $scope.card.toLowerCase().replace(/ /g,'-');
};

我按照你的建议做了。很好用,谢谢。
<img ng-src="images/cards/{{cardChange()}}.png"