JavaScript Regex三元字符串



我正在使用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如何匹配。

解释

  • templateUrltemplateUrl 匹配

  • ([^?]*)?([^:]*):([^;]*)与三元算子匹配

    • ([^?]*)?匹配除?之外的任何内容,后跟问号

    • ([^:]*):匹配除:之后的: 之外的任何内容

    • templateUrl0匹配除; 之外的任何内容

  • CCD_ 12与CCD_。

    • (s*=s*)=匹配
    • [^;]*)匹配除;以外的任何内容

相关内容

  • 没有找到相关文章

最新更新