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

javascript regex verify a variable then capture that variable

本文关键字:变量 然后 一个 验证 正则表达式 javascript      更新时间:2023-09-26

我想我应该重写它并添加一点上下文(这样更容易向我解释)。

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

// 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]; 
}

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

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

模式开头的^表示字符串必须以"mydomain…"开头。

最后,.*的意思是"任何东西",而它周围的( )的意思则是"在比赛中捕捉到这一点"。

至于使用它,请在JS 101中阅读regex,它将为您提供regex的良好介绍:)

您甚至不需要regex。你所需要的只是.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);
}
相关文章: