regex - UI-Router 的简单正则表达式路由约束

标签 regex angularjs angular-ui-router

我正在尝试限制路由,以便只有 '/route1''/route2' 解析为以下规则:

$stateProvider.state("promotional", {
    url: "/{contentType}",
    templateUrl: coreConfig.path() + "/modules/content/content.tmpl.html",
    controller: "promotionalController",
    controllerAs: "contentCtrl",
    data: { requiresLogin: true }
});

对于url我已经尝试过

url: "/{contentType: (route1|route2)}"

url: "/{contentType: [(route1|route2)]}"

url: "/{contentType: [route1|route2]}"

这些似乎都不起作用。有什么解决办法吗?

最佳答案

a working plunker

我们可以像这样使用正则表达式:

 // just routes 'route1' or 'route2'
 $stateProvider
    .state("promotional", {
        url: "/{contentType:(?:route1|route2)}",
        templateUrl: coreConfig.path() + "/modules/content/content.tmpl.html",
        controller: "promotionalController",
        controllerAs: "contentCtrl",
        data: { requiresLogin: true }
    })

    // similar but only for 'route3' or 'route4' or 'route5'
    .state("other", {
        url: "/{contentType:(?:route3|route4|route5)}",
        templateUrl: coreConfig.path() + "/modules/content/content.tmpl.html",
        controller: "promotionalController",
        controllerAs: "contentCtrl",
        data: { requiresLogin: true }
    })

类似问题:

检查上面的例子here

关于regex - UI-Router 的简单正则表达式路由约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30445836/

相关文章:

html - 使用 div id 参数作为 html 标签

javascript - TypeScript 构建错误 : Property does not exist on type 'IStateParamsService'

java - 如果多个正则表达式匹配剩余输入的前缀怎么办?

php - 正则表达式获取 "any_characters((number,number))"

python - Pandas 选择带有正则表达式的列并按值除

javascript - tabset 中的 AngularJS $scope 问题

javascript - $scope.$watch 在 jquery onchange 之后不触发?

javascript - 使用正则表达式删除特殊字符

angularjs - 如何在 ui View 中显示自定义指令?

angular-ui-router - 数据表内的Angular Material 2 routerlink