使用javascript正则表达式区分字符串?

时间:2014-04-29 15:20:26

标签: javascript regex

我想区分使用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"

2 个答案:

答案 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/),那么您必须稍微调整一下。不过,对于这样的问题,在我看来,它似乎比正则表达式更优雅。