如何匹配javascript中的url与正则表达式

时间:2014-08-12 17:14:18

标签: javascript jquery regex

当网站在网址中有/category/blog时,我正在尝试将css添加到div中。

遵循我的代码:

    var expression = /[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi;
    var regex = new RegExp(expression);
    var paths = ['/blog', '/category'];

  for (i = 0; i < paths.length; i++) {
      if (paths[i].match(regex) )
            {
             console.log("Successful match");
             $('.page-title').css('bottom', '-100px');
            } else {
             console.log("No match");
            }
    }

问题是这总是返回false,似乎没有得到/blog/category我只需要将这两个部分放在url中时放入css,我认为这个正则表达式是错误或缺少什么,有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

Regex看起来会匹配一个完整的URL ...而不是像你在这里做的那样。此外,此代码中没有引用您当前页面的位置。

这样的事情应该有效:

if (location.href.match(/\/(blog|category)/)) {
  console.log("Successful match");
  $('.page-title').css('bottom', '-100px');
} else {
  console.log("No match");
}

答案 1 :(得分:1)

此正则表达式验证阵列上的字符串是否格式为xxxxx.yyyy / zzzzz。而且他们都没有。

此外......即使字符串符合预期格式,您也可以传递所有有效的URL,而不是仅传递您想要的URL(博客和类别)。

请注意,您并未在任何地方验证实际网址。

也许你想要的是:

var url = window.location.href;
var paths = ['/blog','/category']

for (i = 0; i < paths.length; i++) {
    if (url.indexOf(paths[i]) > 0){
        console.log("Successful match");
        $('.page-title').css('bottom', '-100px');
    } else {
        console.log("No match");
    }
}