[英]JavaScript Regex Ternary string
我正在使用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"}}
现在,用于替换目标模板字符串的正则表达式不再捕获所有html案例
/templateUrl\s?[:=]\s?['"]([^"']+)["']/gm
有人会使用正则表达式来覆盖这两个值的三进制情况吗?
如果它也可以在单个正则表达式中覆盖原始情况,那将是很好的。
$ scope.templateUrl = $ scope.isPdf “/视图/结果/击穿detailed.html”:? “/视图/结果/ breakdown.html”}}
if($scope.isPdf){
$scope.templateUrl = '/views/results/breakdown-detailed.html';
} else {
$scope.templateUrl = '/views/results/breakdown.html';
}
我将在regexr中进行测试以进行尝试。
使用表格的正则表达式
templateUrl(([^?]*)\?([^:]*):([^;]*)|(\s*=\s*)[^;]*)
它将捕获任何内容,然后是templateUrl
例如,有关正则表达式的匹配方式,请参见http://regex101.com/r/hD4wU7/1 。
说明
templateUrl
与templateUrl
匹配
([^?]*)\\?([^:]*):([^;]*)
匹配三元运算符
([^?]*)\\?
匹配什么?
跟问号
([^:]*):
匹配除:
之后的所有其他字符:
([^;]*)
匹配;
(\\s*=\\s*)[^;]*)
与if
大小写匹配。
(\\s*=\\s*)
匹配=
[^;]*)
匹配;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.