javascript正则表达式url(url substring)

时间:2013-12-04 08:58:58

标签: javascript jquery regex

嘿伙计们我写了一个简单的函数,它读取当前的url并设置某种亮点。

如果我打开网址,一切正常,但如果我做更多高级请求则无效。

示例:如果我请求“/ customers”它可以工作但是如果我请求“/ customers / 10”它就不再工作了。 有人可以为我提供一些正则表达式的动作吗?

提前致谢

function setGUI() {
var url = window.location.pathname;
switch(url) {
    case "/orders":
        $(document).ready(function() {
            $(".nav li:nth-child(2)").addClass("active");
        });
        break;

    case "/customers": // match "customers/any_id"
        $(document).ready(function() {
            $(".nav li:nth-child(3)").addClass("active");
        });
        break;

    case "/partners": match "partners/anyid"
        $(document).ready(function() {
            $(".nav li:nth-child(4)").addClass("active");
        });
        break;

    case "/help":
        $(document).ready(function() {
            $(".nav li:nth-child(5)").addClass("active");
        });
        break;

    case "/users/": // match "/users/any_id/"
        $(document).ready(function() {
            $(".nav li:nth-child(6)").addClass("active");
        });
        break;

    default:
        alert("debug");
    }
}

setGUI();

2 个答案:

答案 0 :(得分:1)

看起来你的函数不需要使用第二个斜杠之后的任何信息,所以我建议你从第二个斜杠开始删除所有内容:

var url = window.location.pathname.replace(/^(\/[^/]+)\/.*/, "$1");

...然后按原样保留开关和案例条件。

答案 1 :(得分:0)

Switch将根据相等性进行评估。一种解决方案是使用if-else代替。 我建议使用indexOf

..
if(url.indexOf("/orders") > -1){
        $(document).ready(function() {
            $(".nav li:nth-child(2)").addClass("active");
        });
}else if(url.indexOf("/customers") > -1){
..