2016-02-12 84 views
1

我知道網上有很多關於它的東西,但我試圖克服一個特定的問題,我沒有遇到任何人詢問它。在html中使用正則表達式尋找網址

所以我有這樣的正則表達式我爲內HREF搜索網址/ SRC屬性:

\s(?:href|src)\s*=\s*(["']??)\s*([^"']+)(?:\s*\1)[^>]*> 

問題是,它的匹配像這樣的事情還有:

var a=""; 
a += "<a href=\""+d.y+"\">"; 

我試着拿出一個解決方案,不要讓這些誤報,但我真的不能,所以我在這裏尋求幫助。

請注意,我不是在尋找,爲了做到這一點解析DOM,唯一的正則表達式

+0

你學習正則表達式?我想你還應該學習何時使用以及何時避免它們。你有HTML,使用DOM解析器從HTML文檔中獲取數據。 –

+0

@WiktorStribiżew我正在使用正則表達式,因爲我發現更多的URL與href/src屬性之外的其他正則表達式發現更多的URL,否則無法用dom解析器找到,這只是一個正則表達式,我正打算放入一個'discover'正則表達式數組將從html/css/js /其他文件中獲取的網址。這就是爲什麼我使用正則表達式 – Jorayen

+0

然後請在問題中明確說明你正在做什麼,使用什麼工具,而不僅僅是在href/src屬性中搜索URL * –

回答

0

我最終改寫使其期待0或多個屬性,然後在src/HREF的正則表達式屬性,所以像我的問題中的錯誤肯定不會計數。

這是我的新的正則表達式:

\s(?:src|href)\s*=\s*(?:["']?\s*([^"'>]+)\s*["']?)(?:\s+[^"'>\s]+(?:\s*=\s*["']?[^"'>]*["']?)?)*\s*\/?>