0

我希望使用javascriptmootools从文本中检测最后一个 url 。网址可以不带前缀/方案

我正在研究像 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.comwww.example2.com的完整数组会更好

我搜索了很多但找不到解决方案。最接近我的要求的是关于使用正则表达式进行 URL 验证的问题以及如何使用 jQuery 从纯文本中提取 URL?

非常感谢任何帮助。

4

3 回答 3

1

正则表达式

/([^:\/?# ]+:)?(\/\/[^\/?# ]*)?[^?# ]+(\?[^# ]*)?(#\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/
**讨论**
  • 此正则表达式将在输入字符串中查找任何看起来像URL 的子字符串。
  • 没有对找到的任何 URL 执行验证。例如,如果输入字符串是3aBadScheme://hostname,正则表达式会将其检测为 URL。在这个例子中,3aBadScheme是无效的,因为方案必须以字母开头。

    摘自RFC3986

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

于 2012-10-10T07:49:09.033 回答
1

给定您的输入字符串,我想您只想使用空格作为分隔符来拆分它? .split(' ')?

于 2012-10-10T07:52:10.213 回答
1

通过在这 2 个链接中组合信息: 如何使用 jQuery 从纯文本中提取 URL? 使用 JavaScript 检测文本中的 URL

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

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

于 2012-10-10T12:53:53.813 回答