javascript正则表达式验证变量然后捕获该变量

时间:2012-02-12 21:13:32

标签: javascript regex

我以为我会重写这个并添加一些上下文(更多信息,这对我来说更容易解释)。

Basicaly我正在使用popstate事件捕获后退/前进按钮,如下所示:

 window.addEventListener("popstate", function(e) { 


     curstate = window.location.href ;

然后使用switch语句根据新状态确定要执行的操作:

     switch (curstate) {

        case 'http://mydomain.com/':

            navi('about', 200);
            break;



        case 'http://mydomain.com/resume':
            navi('resume', 200);
            break;
        };

    });

状态是mydomain.com/portfolio/-whatever -

时出现问题

我需要一个案例:从mydomain.com/portfolio/开始(触及uri的这个位):然后将捕获的位放在变量中,例如currentpage = capturedbitofuri

3 个答案:

答案 0 :(得分:1)

// returns an array on success or null on failure
var match = /^mydomain\.com\/portfolio\/(.*)/.exec(str); 
if (match) {
   // match[1] contains the group (.*), which is everything after the prefix
   return match[1]; 
}

答案 1 :(得分:0)

相当简单:/^mydomain\.com\/portfolio\/(.*)/

必须转义/个字符,因为我们使用/作为模式的分隔符。

模式开头的

^表示该字符串必须以“mydomain ...”开头。

最后,.*表示“任何内容”,周围的( )表示“在匹配中捕获此内容”。

至于使用它,阅读regex in JS 101,它会给你一个很好的正则表达式介绍:)

答案 2 :(得分:0)

你甚至不需要正则表达式。所有你需要包围的是.indexOf和.substring。

if (curstate === 'http://mydomain.com/') {

    navi('about', 200);

} else if (curstate === 'http://mydomain.com/resume')

    navi('resume', 200);

} else if (curstate.indexOf('http://mydomain.com/portfolio') > -1) {
    var base = 'http://mydomain.com/portfolio';
    portfoliosection = curstate.substr(base.length + 1, curstate.length);
}