如何使用jQuery从纯文本中提取URL?

时间:2010-12-21 23:13:56

标签: javascript jquery url

我是jQuery的初学者。

我只是想将一个文本块传递给一个函数并返回一个包含在其中的url数组。

“我需要从文本中获取类似http://www.something.com的网址,如果有更多网站,那么就抓住这些网址”。

有任何帮助吗?有.GetUrl()吗?

注意:我吮吸正则表达式!

4 个答案:

答案 0 :(得分:26)

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;
}

希望它有所帮助。

答案 1 :(得分:5)

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]
}

See demo →

答案 2 :(得分:1)

您必须使用正则表达式。尝试:

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

如果你不熟悉正则表达式,我建议你看看这个在线工具来构建它们:http://rubular.com/

答案 3 :(得分:0)

尝试此操作以获取所有类型的链接

http://aaa.aaa.aaa

www.aaa.aaa

www.aaa.aaa/aaa

string.match(/(www | http | https | ftp | ftps)?:?/?/?[a-zA-Z0-9-。] +。[a-zA-Z] {2,3 }(/ \ S *)?/ gi);