以下是我尝试匹配的网址示例:http://store.mywebsite.com/folder-1/folder-2/item3423434.aspx
我想要匹配的是http://store.mywebsite.com/folder-1,除了“folder-1”总是一个不同的值。我无法弄清楚如何为此写一个if语句:
示例(伪代码)
if(url contains http://store.mywebsite.com/folder-1)
do this
else if (url contains http://store.mywebsite.com/folder-2)
do something else
等
答案 0 :(得分:4)
为了保持简单......
if(location.pathname.indexOf("folder-1") != -1)
{
//do things for "folder-1"
}
如果值“folder-1”可能出现在字符串的其他部分,这可能会给你误报。如果您已经确定不是这种情况,那么提供的示例就足够了。
答案 1 :(得分:3)
我会split()
字符串并检查网址的个别组成部分:
var str = "http://store.mywebsite.com/folder-1/folder-2/item3423434.aspx"
// split the string into an array of parts
var spl = str.split("/");
// spl is now [ http:,,store.mywebsite.com,folder-1,folder-2,item3423434.aspx ]
if (spl[4] == "folder-1") {
// do something
} else if (spl[4] == "folder-2") {
// do something else
}
使用此方法,也可以轻松检查URL的其他部分,而无需使用带有子表达式捕获的正则表达式。例如匹配路径中的第二个目录将是if spl[5] == "folder-x"
。
当然,您也可以使用indexOf()
,这将返回字符串中子字符串匹配的位置,但此方法不是那么动态,如果有的话,它不是非常有效/易于阅读要成为很多else
条件:
var str = "http://store.mywebsite.com/folder-1/folder-2/item3423434.aspx"
if (str.indexOf("http://store.mywebsite.com/folder-1") === 0) {
// do something
} else if (str.indexOf("http://store.mywebsite.com/folder-2") === 0) {
// do something
}
答案 2 :(得分:0)
假设基本网址已修复且文件夹编号可能非常大,则此代码应该有效:
var url = 'http://store.mywebsite.com/folder-1/folder-2/item3423434.aspx'
, regex = /^http:..store.mywebsite.com.(folder-\d+)/
, match = url.match(regex);
if (match) {
if (match[1] == 'folder-1') {
// Do this
} else if (match[1] == 'folder-2') {
// Do something else
}
}
答案 3 :(得分:0)
只需使用URL parting in JS,然后就可以将URL与简单字符串条件或正则表达式匹配