我想区分使用javascript正则表达式的字符串网址,我想知道某个网页是类别还是产品页面?
function whatIsThePage(_str){
if(_str.match("")){
alert("category page");
}
else if(_str.match("")){
alert("product page");
}
else{
alert("some other page");
}
}
// some examples
var someUrl = whatIsThePage("brands/nike") // alert "category page"
var someUrl2 = whatIsThePage("/brands/nike/someproduct") // alert "product page"
var someUrl3 = whatIsThePage("/brands/adidas") // alert "category page"
var someUrl4 = whatisThePage("/checkout/success") // alert "some other page"
答案 0 :(得分:0)
假设区分产品页面的东西是第三级,那么
if(_str.match(/\/brands\/[^/]+\/.+/)) {
alert('product');
} else if(_str.match(/\/brands\/.+/)) {
alert('category');
} else {
alert('something else');
}
这表示匹配字符串/brands/
,后跟任何不是/
一次或多次的字符,后跟/
,后跟任何其他字符。如果它与警报产品匹配,否则只检查它是否匹配/brand/
后跟任何其他字符,如果是这样警告类别。
查看http://tinyurl.com/kf5g6s8以了解正则表达式。
答案 1 :(得分:0)
我想提供略有不同的解决方案。如果你所关心的只是'级别的数量'在字符串中,您可以将字符串拆分为/
个字符并计算元素数量:
function whatIsThePage(_str) {
var pageTypes = [,,,"category page", "product page"];
var pageType = pageTypes[_str.split('/').length] || "something else";
alert(pageType);
}
whatIsThePage("/brands"); // "something else"
whatIsThePage("/brands/nike"); // "category page"
whatIsThePage("/brands/nike/someproduct"); // "product page"
请注意,这是非常简单的实现。如果您只想将此限制为第一个'级别的字符串。是确切的字符串"brands"
,或者如果您需要排除最后一个级别为空字符串的字符串(例如/brands/nike/
),那么您必须稍微调整一下。不过,对于这样的问题,在我看来,它似乎比正则表达式更优雅。