0

http://www.example.com比如说,如果 document.location 等于或,我希望条件为真http://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/*/") 

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

4

5 回答 5

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 演示

于 2013-10-17T15:16:14.480 回答
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
于 2013-10-17T15:16:15.607 回答
1

尝试以下操作:

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

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

正则表达式 101 演示

于 2013-10-17T15:16:17.793 回答
0

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

m = location.href.matches(/www\.example\.com\/(?=example\/)/i);
于 2013-10-17T15:12:15.910 回答
0

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

http://www.example.com/example/qwerty/uiop/也会有效吗?以/但有两个中间层次结束。

于 2013-10-17T15:09:59.170 回答