[removed] extract URLs from string (inc. querystring) and return array

前端 未结 4 1215
臣服心动
臣服心动 2020-12-01 23:44

I know this has been asked a thousand times before (apologies), but searching SO/Google etc I am yet to get a conclusive answer.

Basically, I need a JS function whic

相关标签:
4条回答
  • 2020-12-02 00:24

    try this

    var expression = /[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi;
    

    you could use this website to test regexp http://gskinner.com/RegExr/

    0 讨论(0)
  • 2020-12-02 00:28

    I just use URI.js -- makes it easy.

    var source = "Hello www.example.com,\n"
        + "http://google.com is a search engine, like http://www.bing.com\n"
        + "http://exämple.org/foo.html?baz=la#bumm is an IDN URL,\n"
        + "http://123.123.123.123/foo.html is IPv4 and "
        + "http://fe80:0000:0000:0000:0204:61ff:fe9d:f156/foobar.html is IPv6.\n"
        + "links can also be in parens (http://example.org) "
        + "or quotes »http://example.org«.";
    
    var result = URI.withinString(source, function(url) {
        return "<a>" + url + "</a>";
    });
    
    /* result is:
    Hello <a>www.example.com</a>,
    <a>http://google.com</a> is a search engine, like <a>http://www.bing.com</a>
    <a>http://exämple.org/foo.html?baz=la#bumm</a> is an IDN URL,
    <a>http://123.123.123.123/foo.html</a> is IPv4 and <a>http://fe80:0000:0000:0000:0204:61ff:fe9d:f156/foobar.html</a> is IPv6.
    links can also be in parens (<a>http://example.org</a>) or quotes »<a>http://example.org</a>«.
    */
    
    • https://github.com/medialize/URI.js
    • http://medialize.github.io/URI.js/
    0 讨论(0)
  • 2020-12-02 00:31

    You could use the regex from URI.js:

    // gruber revised expression - http://rodneyrehm.de/t/url-regex.html
    var uri_pattern = /\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/ig;
    

    String#match and or String#replace may help…

    0 讨论(0)
  • 2020-12-02 00:42

    Following regular expression extract URLs from string (inc. query string) and returns array

    var url = "asdasdla hakjsdh aaskjdh https://www.google.com/search?q=add+a+element+to+dom+tree&oq=add+a+element+to+dom+tree&aqs=chrome..69i57.7462j1j1&sourceid=chrome&ie=UTF-8 askndajk nakjsdn aksjdnakjsdnkjsn";
    
    var matches = strings.match(/\bhttps?::\/\/\S+/gi) || strings.match(/\bhttps?:\/\/\S+/gi);
    

    Output:

    ["https://www.google.com/search?q=format+to+6+digir&…s=chrome..69i57.5983j1j1&sourceid=chrome&ie=UTF-8"]
    

    Note: This handles both http:// with single colon and http::// with double colon in string, vice versa for https, So it's safe for you to use. :)

    0 讨论(0)
提交回复
热议问题