5

您好我正在尝试匹配允许查询字符串的特定 URL。基本上我需要发生以下情况:

  • http://some.test.domain.com- 经过
  • http://some.test.domain.com/- 经过
  • http://some.test.domain.com/home- 经过
  • http://some.test.domain.com/?id=999- 经过
  • http://some.test.domain.com/home?id=888&rt=000- 经过
  • http://some.test.domain.com/other- 失败
  • http://some.test.domain.com/another?id=999- 失败

这是我到目前为止所拥有的:

var pattern = new RegExp('^(https?:\/\/some\.test\.domain\.com(\/{0,1}|\/home{0,1}))$');
if (pattern.test(window.location.href)){
    console.log('yes');   
}

上面的代码仅适用于前三个,不适用于查询字符串。任何帮助,将不胜感激。谢谢。

4

2 回答 2

6

像这样的模式应该有效(至少对于您的特定域)

/^http:\/\/some\.test\.domain\.com(\/(home)?(\?.*)?)?$/

这将匹配一个文字,http://some.test.domain.com可选地后跟所有文字/,可选地后跟文字home,可选地后跟文字?和任意数量的其他字符。

你可以在这里测试

于 2013-08-29T20:56:35.530 回答
0

不要使用正则表达式,使用 URL 解析器。你可以使用purl

然后,您将执行以下操作:

url = "http://some.test.domain.com/home" // Or any other
purl(url).attr('path')  // is equal to "home" here.

您只需要检查.attr('path')您接受的路径(看似"""/""home")。


这是一些示例输出:

purl("http://some.test.domain.com/?qs=1").attr('path')
"/"
purl("http://some.test.domain.com/other").attr("path")
"/other"
purl("http://some.test.domain.com/home").attr("path")
"/home"
于 2013-08-29T20:56:03.613 回答