2017-03-17 43 views
2

如果已回答此問題,我表示歉意。我嘗試過搜索,可能我沒有使用正確的術語。如果URL包含6位數字,則將該值附加到類別

我有鏈接的頁面到PDF例如下面:

<a href="https://www.pdflinks.com/files/190488/nameoffile.pdf">Link1</a> 
<a href="https://www.pdflinks.com/files/112254/nameoffile.pdf">Link2</a> 

如果一個URL包含6位(如上述)和.pdf可以在這些值使用正則表達式和JQuery被添加到HREF作爲一類?所以結果是:

<a href="https://www.pdflinks.com/files/190488/nameoffile.pdf" class="pdf190488">Link1</a> 
<a href="https://www.pdflinks.com/files/112254/nameoffile.pdf" class="pdf112254">Link2</a> 

我曾嘗試以下,但沒有雪茄

var regex = "^[0-9]{1,6}$"; 
$('a').each(function() { 
    $(this).addClass(regex.match($(this).attr("href"))[0] 
}); 

回答

2

有幾個錯誤:

  • 正則表達式被錨定:沒有匹配
  • 正則表達式錯誤的初始化
  • 使用

var regex = /[0-9]{1,6}/; 
 
$('a').each(function() { 
 
    $(this).addClass('pdf' + regex.exec($(this).attr("href"))[0]); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
 
<a href="https://www.pdflinks.com/files/190488/nameoffile.pdf">Link1</a> 
 
<a href="https://www.pdflinks.com/files/112254/nameoffile.pdf">Link2</a>

此外,如果你的意思是方法exec而不是match

  • 的JS是無效的(缺少一個右括號) 正好6位數,將正則表達式更改爲[0-9]{6}

  • +0

    謝謝Ayoub。這個伎倆。欣賞解釋。 – BentleyO

    +0

    1個快速提問。您提供的代碼按預期工作,但如果存在不符合條件的URL(不包含6位數字),則無法在此點之後的任何其他鏈接上使用。例如: L1 L2 L2 結果是: L1 L2 L3 BentleyO

    +0

    有什麼想法托馬斯? – BentleyO

    0

    對於上述網址:

    $('a').each(function() { 
        var path = $(this).attr("href"); 
        var str = path.split("/"); 
        var fileName = str[5].split("."); 
        var className = fileName[1]+str[4]; 
        $(this).addClass(className); 
    }); 
    
    2

    有你的代碼的幾個問題:

    1. 你的正則表達式,"^[0-9]{1,6}$"

    這是說你期待一個數,長度爲1〜6個字符,也就是在開始字符串也是結束。你也設定是作爲一個字符串,而可以使用一個實際的表達式:

    var regex = /[0-9]{1,6}/g; 
    
  • regex.match不是方法。
  • 您正在調用match作爲正則表達式的一種方法,但它實際上是另一種方式。 match是一個字符串的方法。

    $(this).attr('href').match(regex)[0] 
    

    你的代碼的更新可能如下:

    var regex = /[0-9]{1,6}/g; 
     
    
     
    $('a').each(function() { 
     
        var $this = $(this); 
     
        $this.addClass('pdf' + $this.attr('href').match(regex)[0]); 
     
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
     
    <a href="https://www.pdflinks.com/files/190488/nameoffile.pdf">Link1</a> 
     
    <a href="https://www.pdflinks.com/files/112254/nameoffile.pdf">Link2</a>

    有幾個方法,你可以改善這一點,包括增加前檢查本場比賽的存在班上。

    +0

    感謝chazsolo的解釋和替代解決方案。 – BentleyO

    相關問題