Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS Ui路由器正则表达式匹配url中的通配符_Javascript_Regex_Angularjs_Url Routing_Angular Ui Router - Fatal编程技术网

Javascript AngularJS Ui路由器正则表达式匹配url中的通配符

Javascript AngularJS Ui路由器正则表达式匹配url中的通配符,javascript,regex,angularjs,url-routing,angular-ui-router,Javascript,Regex,Angularjs,Url Routing,Angular Ui Router,我想知道这是否可行-我需要用一种模式匹配以下URL: /one/app/home /one/two/app/home /one/two/three/app/home ... 我知道AngularJS路由不支持正则表达式,但支持正则表达式 但这不起作用(请转到/fail,查看所有示例)。我想做的事情可能吗?您应该这样使用它: state("home", { url: "/{beginPath:.+}{endPath:/app/home}", templateUrl: "asset

我想知道这是否可行-我需要用一种模式匹配以下URL:

/one/app/home
/one/two/app/home
/one/two/three/app/home
...
我知道AngularJS路由不支持正则表达式,但支持正则表达式


但这不起作用(请转到
/fail
,查看所有示例)。我想做的事情可能吗?

您应该这样使用它:

state("home", {
    url: "/{beginPath:.+}{endPath:/app/home}",
    templateUrl: "assets/tpl/home.html",
    controller: "homeController"
});
url: "/{beginPath:one/.+}{endPath:/app/home}"
然后您将有权访问
$stateParams.beginPath
(它等于
/app/home/
之前的所有内容)和
$stateParams.endPath
,它将等于
/app/home/


如果在Begging中需要
/one/
,则使用以下方法:

state("home", {
    url: "/{beginPath:.+}{endPath:/app/home}",
    templateUrl: "assets/tpl/home.html",
    controller: "homeController"
});
url: "/{beginPath:one/.+}{endPath:/app/home}"

使用
+
而不是
{.+}
,并在末尾添加
$
以确保
app/home
部分是最后一部分:
+/app/home$
@Robin我认为URL解析在这里有一定的限制,不允许这样做。对不起,我不熟悉。。。作为一个随机的想法,我会说它不起作用,要么是因为“name”部分是强制性的(
{id:…}
),要么是因为正则表达式不能包含
/
(即它只应用于斜杠之间)。但我不熟悉具体情况,所以这只是一个猜测。祝你好运我可以将其与angular native router一起使用吗?虽然您不能使用高级正则表达式语法,但可以使用angular native
ngRoute
解决此特定任务。要匹配以
/app/home
结尾的任何url,请使用以下命令:
$routeProvider。当('/:beginPath*\/app/home',{…}'
要匹配以
/app/home
结尾并以“/one”开头的任何url,请使用此命令:
$routeProvider。当('/one/:beginPath*\/app/home',{…}“
愚蠢的注释格式设置。无论如何,您可以访问控制器中“/app/home”之前的“/code>$routeParams中的所有内容。我尝试过相同的方法,但当您重新加载或刷新页面或直接将url放入地址栏时,这不起作用。我们是否有任何选项来解决此问题