Я использую скрипт Google Apps для извлечения содержимого писем из gmail, после чего мне нужно извлечь все ссылки из тегов html. Я нашел код здесь, в stackoverflow, и я реализовал его с регулярным выражением, но проблема в том, что он всегда возвращает мне первый URL-адрес. (http://vacante2016.eu/tr/17599/51743713/c4f5eadf38eb475d39e3cdeca9201538
)Получить все ссылки с html-страницы с помощью regex
Есть ли способ сделать цикл, который ищет следующий контент, соответствующий выражению регулярного выражения, для отображения всех элементов по одному?
Здесь вы можете увидеть пример с содержанием электронной почты, что мне нужно, чтобы получить эти ссылки из: 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);
}
}
UPDATE: Изменено регулярное выражение /(?: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-адреса?
Похоже, вы забыли '/ g':' var regexToken = /(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a -zA-Z] {2,3} (\/\ S *)/г;? '. См. Http://stackoverflow.com/questions/520611/how-can-i-match-multiple-occurrences-with-a-regex-in-javascript-similar-to-phps –
Если письмо отформатировано с помощью html, есть причина, почему вы не просто получаете атрибуты прямо из тегов? – NTL
@NTL нет, нет причин, но я не знаю, как это сделать ... Я думаю, что регулярное выражение должно искать свойство 'href' из' ' и '' tags – Valip