簡體   English   中英

如何用正則表達式匹配javascript中的URL

[英]How to match a url in javascript with regexp

當網站的網址中包含/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,我認為此regex錯誤或缺少某些內容,有人可以提供幫助?

該正則表達式看起來將匹配完整的URL ...而不是像您在此處所做的那樣的路徑。 另外,此代碼中沒有任何地方可以引用您當前所在的頁面。

這樣的事情應該起作用:

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

此正則表達式驗證數組上的字符串是否采用xxxxx.yyyy / zzzzz格式。 他們都沒有。

同樣,即使字符串采用預期的格式,您也將傳遞所有有效的URL,而不是僅傳遞所需的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");
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM