javascript获取没有前缀的最后一个网址

时间:2012-10-10 07:45:57

标签: javascript regex mootools

我希望使用 javascript mootools 检测文本中的最后一个网址。网址可以没有前缀/方案

我正在开发像Facebook这样的URL自动感觉。如果用户可以提供URL www.example.com或http://www.example.com,则应通过JavaScript检测其中任何一个。请参阅stackoverflow检测到的URL包含在没有URL方案的方案中,它无法检测到URL。就我而言,我需要两者。

以下是一些文字

'http://www.example.com www.example2.com'

现在我想 www.example2.com 如果我得到包含 http://www.example.com www.example2.com的完整数组会更好

我搜索了很多但找不到解决方案。 最符合我要求的是Question about URL Validation with RegexHow do I extract a URL from plain text using jQuery?

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

<强> REGEX

/([^:\/?# ]+:)?(\/\/[^\/?# ]*)?[^?# ]+(\?[^# ]*)?(#\S*)?/gi


示例代码

var str = 'http://www.example.com www.example2.com scheme://username:password@domain:port/path?query_string#fragment_id';
var t = str.match(/([^:\/?# ]+:)?(\/\/[^\/?# ]*)?[^?# ]+(\?[^# ]*)?(#\S*)?/gi);

/* 
   t contains : 
   [ 
     "http://www.example.com",
     "www.example2.com",
     "scheme://username:password@domain:port/path?query_string#fragment_id"
   ]
*/


<强>样本

  

http://jsfiddle.net/wvYTd/


讨论

  • 此正则表达式将在输入字符串中找到看起来像的任何子字符串。
  • 未对找到的任何网址执行验证。例如,如果输入字符串是3aBadScheme://hostname,则正则表达式会将其检测为URL。在此示例中,3aBadScheme无效,因为方案必须以字母开头。

    摘自RFC3986

      

    (...)
    方案名称由一系列以字母开头的字符组成,后跟字母,数字,加号(“+”),句号(“。”)或连字符的任意组合( “ - ”)。
    (...)

  •   

答案 1 :(得分:1)

考虑到你的输入字符串,我想你只想用空格作为分隔符将它拆分? .split(' ')

答案 2 :(得分:1)

通过梳理这两个链接中的信息: How do I extract a URL from plain text using jQuery? Detect URLs in text with JavaScript

我们可以得到这个: http://jsfiddle.net/qQwGA/1/

如果我理解你要做什么,这应该涵盖它。