我有一個regex
表達式,它返回HTML文件中的所有鏈接,但它有一個問題:它不是僅返回鏈接,如http://link.com
,它還返回href =「 (href="http://link.com
)我能做些什麼,只得到links
不具有href="
如何使用正則表達式從href屬性中獲取鏈接
這是我的正則表達式:?
/href="(http|https|ftp|ftps)\:\/\/[-a-zA-Z0-9.]+\.[a-zA-Z]{2,3}(?:\/(?:[^"<=]|=)*)?/g
全碼:
var source = (body || '').toString();
var urlArray = [];
var url;
var matchArray;
// Regular expression to find FTP, HTTP(S) URLs.
var regexToken = /href="(http|https|ftp|ftps)\:\/\/[-a-zA-Z0-9.]+\.[a-zA-Z]{2,3}(?:\/(?:[^"<=]|=)*)?/g;
// Iterate through any URLs in the text.
while((matchArray = regexToken.exec(source)) !== null)
{
var token = matchArray[0];
token = JSON.stringify(matchArray[0]);
token = matchArray[0].toString();
urlArray.push([ token ]);
}
爲什麼這麼複雜呢? '/ href =「([^」] +)「/ g'(如果你知道輸入將總是有雙引號的屬性值) –
你不應該用正則表達式解析HTML,使用合適的解析器。發生](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags)。 – Amadan
@WiktorStribiżew我試過了,但它也返回給我的電子郵件地址,我不想這 – Valip