繁体   English   中英

JavaScript正则表达式三元字符串

[英]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

说明

  • templateUrltemplateUrl匹配

  • ([^?]*)\\?([^:]*):([^;]*)匹配三元运算符

    • ([^?]*)\\? 匹配什么? 跟问号

    • ([^:]*):匹配除:之后的所有其他字符:

    • ([^;]*)匹配;

  • (\\s*=\\s*)[^;]*)if大小写匹配。

    • (\\s*=\\s*)匹配=
    • [^;]*)匹配;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM