您好我正在尝试匹配允许查询字符串的特定网址。基本上我需要发生以下事情:
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');
}
以上代码仅适用于前三个而不适用于查询字符串。任何帮助,将不胜感激。感谢。
答案 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"