正则表达式将特定URL与查询字符串匹配

时间:2013-08-29 20:52:05

标签: javascript regex

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

  • 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');   
}

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

2 个答案:

答案 0 :(得分:4)

这样的模式应该起作用(至少对于你的特定领域)

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

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

您可以对其进行测试here

答案 1 :(得分:1)

请勿使用正则表达式,请使用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"