检查document.location是否与某个模式匹配

时间:2013-10-17 15:07:35

标签: javascript regex

说,如果document.location等于http://www.example.comhttp://www.example.com/example/anythinghere/,我希望条件为真,但如果位置不完全适合,则为FALSE,例如http://www.example.com/example/anythinghere/sdjfdfasdfaf将返回FALSE。

当然,我写的是:

if(document.location == "http://www.example.com/" || 
    document.location == "http://www.example.com/example/*/") 

但是,我知道好的'星号通配符不起作用,而且,作为一个正则表达式的业余爱好者,我无法找到正确的设置来寻找与模式完全匹配的东西。对于条件的后半部分你会建议什么?

5 个答案:

答案 0 :(得分:1)

以下正则表达式应该这样做:

/^http:\/\/www\.example\.com\/(?:example\/[^\/]+\/)?$/

这是http://www.example.com/的起始部分,后跟可选的/example/somecharacters/

用法:

var re = /^http:\/\/www\.example\.com\/(?:example\/[^\/]+\/)?$/;

if(re.test(document.location.href) {

}

jsFiddle demo

答案 1 :(得分:1)

尝试使用匹配:

regex = /^http:\/\/www.example.com\/(?:example\/(?:[^\/]+\/)?)?$/ 

特别是这说:

  • 从字符串
  • 的实际开始处开始
  • 匹配http://www.example.com/
  • 作为可选组匹配(可选,因为培训?):
    • 匹配示例/
    • 作为可选的其他组匹配:
      • 至少包含1个字符的字符串,不包含正斜杠
      • 后面跟着一个正斜杠
  • 后面是字符串
  • 的结尾

如果您再申请,我认为它涵盖了您的所有情况:

regex.exec("http://www.example.com/example/anythinghere/") // matches
regex.exec("http://www.example.com/example/anythinghere") // doesn't match (no trailing slash)
regex.exec("http://www.example.com/example/anythinghere/qwe") // doesn't match (extra end chars)
regex.exec("http://www.example.com/exam") // doesn't match (no subdir)
regex.exec("http://www.example.com/") // matches

答案 2 :(得分:1)

尝试以下方法:

 if(document.location == "http://www.example.com/" || 
/^http:\/\/www.example.com\/example\/[^\/]+\/?$/.test(document.location))

将测试您的网址是否与http://www.example.com/完全匹配,或者是否使用正则表达式查看其是否与http://www.example.com/example/ANYTHING_HERE_EXCEPT_FORWARD-SLASH/匹配。

Regex101 Demo

答案 3 :(得分:0)

尝试正则表达式,只有[a-zA-Z]+等字母,否则http://www.example.com/example/;:ª*P=)#/")#/将有效

http://www.example.com/example/qwerty/uiop/也有效吗?以/结尾但有两个中间级别。

答案 4 :(得分:0)

您可以使用基于前瞻性的正则表达式:

m = location.href.matches(/www\.example\.com\/(?=example\/)/i);