我正在使用grunt usemin和filerev与uglify一起对静态资产进行版本控制。
JS文件中的角度HTML模板替换工作得很好,直到我们遇到if/else运算符的情况
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"}}
现在regex以模板字符串为目标进行替换,不再捕获所有html案例
/templateUrls?[:=]s?['"]([^"']+)["']/gm
有人会有一个正则表达式来覆盖这两个值的三进制情况吗?
如果它也能在一个正则表达式中覆盖原始情况,那就太好了。
$scope.templateUrl=$scope.isPdf?"/views/results/breakdown detailed.html":"/views/results/breakout.html"}}
if($scope.isPdf){
$scope.templateUrl = '/views/results/breakdown-detailed.html';
} else {
$scope.templateUrl = '/views/results/breakdown.html';
}
我将在regexr中抛出测试来进行尝试。
使用形式的正则表达式
templateUrl(([^?]*)?([^:]*):([^;]*)|(s*=s*)[^;]*)
它将捕获CCD_ 1 之后的任何东西
例如,请参阅http://regex101.com/r/hD4wU7/1关于regex如何匹配。
解释
templateUrl
与templateUrl
匹配([^?]*)?([^:]*):([^;]*)
与三元算子匹配([^?]*)?
匹配除?
之外的任何内容,后跟问号([^:]*):
匹配除:
之后的:
之外的任何内容templateUrl
0匹配除;
之外的任何内容
CCD_ 12与CCD_。
(s*=s*)
与=
匹配[^;]*)
匹配除;
以外的任何内容