gpt4 book ai didi

javascript - 使用正则表达式从 html 页面获取所有链接

转载 作者:行者123 更新时间:2023-12-04 17:57:56 25 4
gpt4 key购买 nike

我正在使用 Google Apps 脚本从 gmail 中获取电子邮件的内容,之后我需要从 html 标签中提取所有链接。我在这里找到了一些代码,在 stackoverflow 上,我用正则表达式实现了它,但问题是它总是返回第一个 url。 ( http://vacante2016.eu/tr/17599/51743713/c4f5eadf38eb475d39e3cdeca9201538 )

有没有办法制作一个循环来搜索下一个与正则表达式匹配的内容以逐一显示所有元素?

在这里您可以看到一个示例,其中包含我需要从中获取这些链接的电子邮件内容:https://www.mailinator.com/inbox2.jsp?public_to=get_urls#/#public_showmaildiv

这是我的代码:

function getURL() {

var threads = GmailApp.getInboxThreads();
var message = threads[0].getMessages()[0];
var content = message.getRawContent();

var source = (content || '').toString();
var urlArray = [];
var url;
var matchArray;

// Regular expression to find FTP, HTTP(S) URLs.
var regexToken = /(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/;

// Iterate through any URLs in the text.
while( (matchArray = regexToken.exec( source )) !== null )
{
var token = matchArray[0];
urlArray.push( token );
}
}

更新:将正则表达式更改为 /(?:ht|f)tps?\:\/\/[a-zA-Z0-9\-.]+\.[a-zA-Z]{2,3}(\/[\S=]*)?/g改进了这些东西,但现在我在搜索 url 时也得到以下类型的响应:"http://vacante2016.eu/clk/17599/5=\r\n1743713/150132/bf7639dd7e7aa48c9197a52a8c61e168\"><img" ...我认为正则表达式也应该有条件返回 url但最多只能到 >符号。

此外,有没有办法删除附加字符,如 = , \r\n来自找到的 url?

最佳答案

您需要使用全局修饰符 /gRegExp#exec 进行多次匹配.

此外,由于您输入的是 HTML 代码,因此您需要确保没有抓取 <\S :

/(?:ht|f)tps?:\/\/[-a-zA-Z0-9.]+\.[a-zA-Z]{2,3}(\/[^"<]*)?/g

参见 regex demo .

如果出于某种原因此模式与等号不匹配,请添加它作为替代:

/(?:ht|f)tps?:\/\/[-a-zA-Z0-9.]+\.[a-zA-Z]{2,3}(?:\/(?:[^"<=]|=)*)?/g

参见 another demo (但是,第一个应该做)。

关于javascript - 使用正则表达式从 html 页面获取所有链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38829880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com