我使用grunt usemin和filerev与uglify一起使用版本化的静态资源。
在我们遇到if / else运算符
的案例之前,JS文件中的角度HTML模板替换效果很好if($scope.isPdf){
$scope.templateUrl = '/views/results/breakdown-detailed.html';
} else {
$scope.templateUrl = '/views/results/breakdown.html';
}
在uglify之后将事物转换为单行三元运算符
$scope.templateUrl=$scope.isPdf?"/views/results/breakdown-detailed.html":"/views/results/breakdown.html"}}
现在,用于替换的目标模板字符串的正则表达式不会长时间捕获所有的html案例
/templateUrl\s?[:=]\s?['"]([^"']+)["']/gm
有人会有正则表达式来覆盖两个值的三元情形吗?
如果它还可以覆盖单个正则表达式中的原始案例,那就太棒了。
$ scope.templateUrl = $ scope.isPdf" /views/results/breakdown-detailed.html":" /views/results/breakdown.html"}}
if($scope.isPdf){
$scope.templateUrl = '/views/results/breakdown-detailed.html';
} else {
$scope.templateUrl = '/views/results/breakdown.html';
}
我会在regexr中测试以试用它。
答案 0 :(得分:0)
使用表单的正则表达式
templateUrl(([^?]*)\?([^:]*):([^;]*)|(\s*=\s*)[^;]*)
会捕获任何后跟templateUrl
例如,请参阅http://regex101.com/r/hD4wU7/1有关正则表达式匹配的方法。
<强>解释强>
templateUrl
匹配templateUrl
([^?]*)\?([^:]*):([^;]*)
匹配三元运算符
([^?]*)\?
匹配?
以外的任何内容,后跟问号
([^:]*):
匹配:
后跟:
([^;]*)
匹配;
(\s*=\s*)[^;]*)
符合if
案例。
(\s*=\s*)
匹配=
[^;]*)
匹配;