2013-06-04 36 views
0

我試圖匹配HTML文檔中包含指向特定文件夾(不是PDF)的鏈接的所有href屬性。我無法得到它的匹配,我有一個獲得所有PDF:JS RegEx適用於除PDF之外的所有文件鏈接

var regexPDF = new RegExp('href=[\'|"](assets/.*?\.pdf)?[\'|"]','gi'); 

但我試圖排除PDF文件還沒有得到我很遠。有沒有辦法做我以後,或者我更好的只是匹配所有文件,然後使用條件語句來檢查它是否是PDF? TA!

達倫

回答

0

你可以嘗試最後4個字符之前使用負前瞻(?!..)

var regexPDF = new RegExp('href=[\'"](assets/(?:.*?(?!\.pdf).{4}|.{0,3}))?[\'"]','gi'); 

注意:你不需要在字符類使用|,因爲它被認爲是as literal

0

負面模式是正則表達式不太擅長的東西。然而,你可以不喜歡以下:

var regexPDF = /[^.]*?\.(?!pdf)/gi; 

// examples 
"test.exe".match(regexPDF) // returns "test." 
"test.pdf".match(regexPDF) // returns null 

這樣做的缺點就是不顯示文件類型(如果你需要的結果),但會過濾所有PDF出來。它也會像test.pdf.bak那樣在文件名中打破點(但是如果需要,你可以增強正則表達式來識別它)。

旁註:請勿使用正則表達式構造函數,而應使用普通正則表達式文字表示法/.../

+0

不,我需要得到結果。爲什麼不使用構造函數? – iamdarrenhall

+0

@dazhall使用構造函數通常不建議在javascript中(對於正則表達式,對象,數組,字符串)。您可以在濾除pdf後獲得完整的href。您不需要直接處理返回值,因此我認爲正則表達式不會返回該類型並不重要。 – Christoph

相關問題