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

javascript正则表达式验证一个变量,然后捕获该变量,javascript,regex,Javascript,Regex,我想我应该重写这篇文章,并添加一点上下文(更多,以便更容易向我解释) 基本上,我用popstate事件捕捉后退/前进按钮,如下所示: window.addEventListener("popstate", function(e) { curstate = window.location.href ; 然后使用switch语句根据新状态确定要执行的操作: switch (curstate) { case 'http://mydomain.com/':

我想我应该重写这篇文章,并添加一点上下文(更多,以便更容易向我解释)

基本上,我用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//-where时,问题就出现了-


我需要一个案例:从mydomain.com/portfolio/(捕获uri的这一位)开始,然后将捕获的位放入变量中,例如
currentpage=capturedbitofuri
非常简单:
/^mydomain.com\/portfolio\/(*)/

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

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

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


至于使用它,请仔细阅读,它会给你一个很好的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);
}

/^mydomain\.com\/portfolio\/(.*)$/
在它之后捕获。你所说的pop是什么意思?不像在
array\u pop
中那样,他的意思是“把它放在一个变量中”并捕获它后面的内容?@Joe在JavaScript中,RegExp被斜杠(
/
)包围着。Literal
/
s必须转义:
\/
.True:)很好的捕获,在那里进入PHP模式hahaok(抱歉,这对我来说有点新),我需要它分为太多部分,一部分来检查它,它从那开始,我在if语句中使用变量。-快速阅读@FrankAstin,这是JSHi-Dor中regex的一个很好的基础101,我已经设置了如下内容,如so
curstate=window.location.href;var match=/^mydomain\.com\/portfolio\/(.*)/.exec(curstate);控制台日志(匹配);如果(match){//match[1]包含组(.*),即前缀console.log(match[1]);}之后的所有内容但我从匹配中得到的只是一个空值。我得到的结果略有不同,但这看起来是一个更整洁的选项。谢谢Devin。是的,我喜欢你不必绞尽脑汁(或任何其他使用你的代码的人)去弄明白正则表达式。
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);
}