当前位置: 首页 > 面试题库 >

使用JavaScript检测文本中的URL

禄仲渊
2023-03-14
问题内容

有没有人建议检测一组字符串中的URL?

arrayOfStrings.forEach(function(string){
  // detect URLs in strings and do something swell,
  // like creating elements with links.
});

更新: 我结束了使用此正则表达式进行链接检测……显然几年后。

kLINK_DETECTION_REGEX = /(([a-z]+:\/\/)?(([a-z0-9\-]+\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel|local|internal))(:[0-9]{1,5})?(\/[a-z0-9_\-\.~]+)*(\/([a-z0-9_\-\.]*)(\?[a-z0-9+_\-\.%=&]*)?)?(#[a-zA-Z0-9!$&'()*+.=-_~:@/?]*)?)(\s+|$)/gi

问题答案:

首先,您需要一个与网址匹配的优质正则表达式。这很难做到。

…几乎所有内容都是有效的网址。有一些标点符号规则将其拆分。没有标点符号,您仍然有一个有效的URL。

仔细检查RFC,看看是否可以构造“无效” URL。规则非常灵活。

例如:::::,一个有效的URL。路径是":::::"。漂亮的文件名,但是有效的文件名。

此外,/////也是有效的网址。netloc(“主机名”)为""。路径是"///"。再次,愚蠢。也有效。此URL规范化为"///"
等效的URL 。

类似的东西"bad://///worse/////" 是完全有效的。哑巴但有效。

无论如何,这个答案并不意味着为您提供最佳的正则表达式,而是证明如何使用JavaScript进行文本内的字符串包装。

好的,所以让我们使用这个: /(https?:\/\/[^\s]+)/g

同样, 这是一个不好的正则表达式 。它将有许多误报。但是,对于此示例来说已经足够了。

function urlify(text) {
    var urlRegex = /(https?:\/\/[^\s]+)/g;
    return text.replace(urlRegex, function(url) {
        return '<a href="' + url + '">' + url + '</a>';
    })
    // or alternatively
    // return text.replace(urlRegex, '<a href="$1">$1</a>')
}

var text = "Find me at http://www.example.com and also at http://stackoverflow.com";
var html = urlify(text);

// html now looks like:
// "Find me at <a href="http://www.example.com">http://www.example.com</a> and also at <a href="http://stackoverflow.com">http://stackoverflow.com</a>"

因此总而言之,请尝试:

$$('#pad dl dd').each(function(element) {
    element.innerHTML = urlify(element.innerHTML);
});


 类似资料:
  • 问题内容: 是否存在使用JavaScript检测客户端计算机上安装的Java版本的可靠方法? 问题答案: 在Java Deployment Toolkit中签 出代码。

  • 问题内容: 我了解,如果是跨域用户,则无法判断用户在做什么。我想做的是跟踪用户是否完全单击。我想象一个场景,在之上不可见,而the 会随后将click事件传递给。 这样的事情可能吗?如果是的话,我将如何处理?的是广告,所以我必须在所使用的标签没有控制权。 问题答案: 这样的事情可能吗? 否。您所能做的就是检测鼠标进入iframe的可能性,以及检测到鼠标进入iframe的可能性(尽管不可靠)(即,试

  • 本文向大家介绍使用JavaScript 实现的人脸检测,包括了使用JavaScript 实现的人脸检测的使用技巧和注意事项,需要的朋友参考一下 我一直对视频和图片中的人脸标记、检测和人脸识别技术很感兴趣。尽管我知道获取逻辑和算法去开发人脸识别软件或者插件已经超出了我的想象。当我知道Javascript库可以识别微笑,眼睛和脸部结构时,我得到启发去写一个教程。有许多的库,这些库要不就是纯粹的基于Ja

  • 我正试图从彩色背景图像中提取文本。我正在尝试的一种方法是边缘检测。用它我把原始图像转换成我可以处理的图像。这将消除图像中的所有颜色,只留下边缘。 我使用此代码获取边缘图像 我的问题是,在我得到这些图像后,我如何才能追踪这些图像中的字母?任何帮助都会很好。谢谢你们 这些是原始图像和边缘检测图像。 原始图像 边缘检测图像

  • 问题内容: 如果他们使用的是v9之前的版本,我想将我们网站的用户退回至错误页面。只是不值得我们花费时间和金钱来支持。使用其他所有非IE浏览器的用户都可以使用,不应被退回。这是建议的代码: 这段代码会成功吗? 首先,我将发表一些评论: 是的,我知道用户可以伪造字符串。我不担心 是的,我知道编程专家更喜欢嗅探功能支持而不是浏览器类型,但在这种情况下,我认为这种方法不可行。我已经知道所有(相关)非IE浏