Как извлечь URL из обычного текста с помощью jQuery? - PullRequest
9 голосов
/ 22 декабря 2010

Я новичок в jQuery.

Я просто хочу передать блок текста функции и вернуть массив URL-адресов, содержащихся внутри.

«Мне нужно получить URL-адрес, похожий на http://www.something.com из текста, и, если therearemore.com, то захватить и его».

Любая помощь? Есть ли .GetUrl ()?

Примечание: я сосу с регулярными выражениями!

Ответы [ 4 ]

26 голосов
/ 14 мая 2011

Плагин jQuery Wiki Text (http://www.kajabity.com/jquery-wikitext/) включает в себя регулярные выражения для поиска URls в тексте, который можно использовать для этой цели.

Итак, вы запросили функцию - ну вот она:

/**
 * A utility function to find all URLs - FTP, HTTP(S) and Email - in a text string
 * and return them in an array.  Note, the URLs returned are exactly as found in the text.
 * 
 * @param text
 *            the text to be searched.
 * @return an array of URLs.
 */
function findUrls( text )
{
    var source = (text || '').toString();
    var urlArray = [];
    var url;
    var matchArray;

    // Regular expression to find FTP, HTTP(S) and email URLs.
    var regexToken = /(((ftp|https?):\/\/)[\-\w@:%_\+.~#?,&\/\/=]+)|((mailto:)?[_.\w-]+@([\w][\w\-]+\.)+[a-zA-Z]{2,3})/g;

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

    return urlArray;
}

Надеюсь, это поможет.

5 голосов
/ 14 мая 2011

RegExp - это, вероятно, путь, и это должно помочь вам:

var searchText = $('yourElement').text(),

    // urls will be an array of URL matches
    urls = searchText.match(/\b(http|https)?(:\/\/)?(\S*)\.(\w{2,4})\b/ig);

// you can then iterate through urls
for (var i = 0, il = urls.length; i < il; i++) {
    // do whatever with urls[i]
}

См. Демонстрацию & # x2192;

1 голос
/ 22 декабря 2010

Вам нужно будет использовать регулярное выражение. Попробуйте:

/\i\b(http|https):\/\/(\S*)\b/i

Если вам не нравятся регулярные выражения, я бы порекомендовал взглянуть на этот онлайн-инструмент для их построения: http://rubular.com/.

0 голосов
/ 24 августа 2018

Попробуйте, чтобы получить все типы ссылок

http://aaa.aaa.aaa

www.aaa.aaa

www.aaa.aaa / ааа

String.match (/ (WWW | HTTP | HTTPS | FTP | FTPS): / / [A-Za-Z0-9 -.] + [A-Za-Z] {2,3???. } (/ \ S *) / г);?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...