我有一个regex
表达式,它返回来自html文件的所有链接,但它有一个问题:它不仅仅返回链接,如http://link.com
,它还返回href =“ (href="http://link.com
)。如果没有links
,我该怎样才能获得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 ]);
}
答案 0 :(得分:1)
RegExp#exec
将存储您的模式中定义的捕获组捕获的所有内容。您可以使用[1]
索引访问第1组。
使用
var token = matchArray[1];
另外,我相信你可以将正则表达式简化为
/\bhref="((?:http|ftp)[^"]+)"/g
如果您确定值始终在双引号内。请参阅this demo。