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