如何使用 JavaScript 正则表达式从推文中提取 URL?

2024-03-04

假设我将推文作为字符串存储在 JS 变量中......

如何使用 JavaScript 正则表达式从推文中提取 URL?

这应该比从字符串中提取 URL 容易得多,因为:

我假设任何以 http 或 www 开头并以空格(或推文结尾)结尾的内容都是 URL。


这是我用来从 Twitter 状态中提取链接的正则表达式之一。

链接匹配模式

(?:<\w+.*?>|[^=!:'"/]|^)((?:https?://|www\.)[-\w]+(?:\.[-\w]+)*(?::\d+)?(?:/(?:(?:[~\w\+%-]|(?:[,.;@:][^\s$]))+)?)*(?:\?[\w\+%&=.;:-]+)?(?:\#[\w\-\.]*)?)(?:\p{P}|\s|<|$)

或者,如果您控制从 Twitter 获取状态的方式,则可以传递include_entities参数为状态/显示 http://dev.twitter.com/doc/get/statuses/show/%3aid(或任何其他支持它的方法,例如状态/用户时间线 http://dev.twitter.com/doc/get/statuses/user_timeline)让 Twitter 为您分解链接、提及和主题标签,如下所示:

http://api.twitter.com/1/statuses/show/23918022347456512.json?include_entities=true http://api.twitter.com/1/statuses/show/23918022347456512.json?include_entities=true

在生成的 JSON 中,请注意entities object.

"entities":{"urls":[{"expanded_url":null,"indices":[27,53],"url":"http:\/\/tinyurl.com\/38wp7nt"}],"hashtags":[],"user_mentions":[]}

现在,您可以引用从 Twitter 返回的数据,而不必自己解析。这种方法的最大好处是您可以将工作转移到 Twitter,并且永远不必担心您的正则表达式是否与 Twitter 的完全匹配。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 JavaScript 正则表达式从推文中提取 URL? 的相关文章

随机推荐

  • 加密 AES/CBC/PKCS7Padding

    帮我加密一下AES CBC PKCS7Padding 下面是我的解密代码AES CBC PKCS7 它正在工作 但是当我加密一些字符串并从我自己解密时 这是错误的 下面我添加代码来加密和解密 AES CBC PKCS7Padding NSD
  • 在 ZF2 控制器中获取请求授权标头

    我正在使用 ZF2 出于某种原因 我可以获取我发送的所有标头 授权标头除外 就像它被过滤掉一样 我试图获取控制器中的所有标头 如下所示 public function createAction data request this gt re
  • SSAS Cube 处理日志

    SSAS立方体在哪里加工 不是错误 不是飞行记录器 日志存储了吗 我们有一个运行 SQL Server Analysis Services 命令的 SQL 代理作业 其中有一些 DMX 处理每个维度 然后处理多维数据集数据库 包含两个多维数
  • 通过 testcafe-browser-tools 将自定义参数传递到 Chrome 二进制文件时,无头运行 testcafe

    在 Vagrant VM 中运行 testcafe 即mostly在职的 但是 Chrome 在启用硬件加速的环境中无法正常启动 因此我必须使用命令行标志来启动它 disable gpu 我利用 testcafe browser tools
  • 如何在webapi上传中获取多部分文件的流?

    我需要使用流 Azure Blob 存储 上传文件 但无法找到如何从对象本身获取流 请参阅下面的代码 我是 WebAPI 的新手 并且使用过一些示例 我正在获取文件和文件数据 但对于我的上传方法来说 它的类型不正确 因此 我需要将其获取或转
  • 将java程序编译为可执行文件[重复]

    这个问题在这里已经有答案了 可能的重复 如何为 Java 程序创建 exe https stackoverflow com questions 516399 how do i create an exe for a java program
  • Xpath 表达式

    我需要获得的价值
  • 无法访问复制到 /var/www/ 或其他文件夹中的 php 文件

    我使用的是带有 LAMP 设置的 Ubuntu 12 10 我将 Windows PC 上的 xampp htdocs 中包含项目文件 php html css 的子目录复制到我的 ubuntu 的 var www 中 但是 当我从浏览器访
  • reinterpret_cast 与 c 风格强制转换 [重复]

    这个问题在这里已经有答案了 可能的重复 c 风格强制转换与reinterpret cast https stackoverflow com questions 8427107 c style cast vs reinterpret cast
  • Tridion 命令扩展如何找到它扩展的命令?

    Tridion 的用户界面允许您扩展特定的命令 这是修改某些现有命令的行为的好方法 在编辑器的配置文件中 这是通过如下部分完成的
  • 通过反射获取枚举值

    我试图在运行时循环并打印给定枚举类的所有枚举值 但我似乎只能返回与值相关的常量 大多数解决方案都指向使用 getEnumConstants values 或 valueOf 但我无法让它们按预期工作 我能找到的最接近的问题是通过反射获取en
  • Android VOIP SipException:无法创建 SipSession

    我正在尝试使用 Android 3 1 上内置的 SIP 运行 VOIP 呼叫 我有物理平板电脑设备 galaxy Tab 10 1 为了测试目的 我创建了一个项目SipDemo 示例 http developer android com
  • NotYetImplemented 错误 ng2-charts

    从 utils js 收到消息 NotYetImplemented 的错误 我在使用nodejs服务器时收到错误 这个错误到底意味着什么 当我使用 ngserve 时 没有这样的错误 我正在使用 ng2 charts 模块中的折线图 完整的
  • 如何检索从 SQL Server 到 VB.NET 受影响的行数?

    基本上 我通过运行时检索程序中的所有数据 我想知道如何检索更新后受影响的行数 以便我可以通过 VB NET 提示用户相关信息 我实际上正在做的是 更新后 如果没有其他行更新 则用户无法再单击按钮 通过使用执行非查询 http msdn mi
  • 子项在父视图之外不可点击

    我创建了一个带有标记的地图视图 看下面这张图 Grandparent是一个填充视图 Parent是我的MarkerView Child是一个可点击的标记 父级有clipChildren false 因此子级是可见的 我的问题是孩子们是可点击
  • 如何在 ASP.NET MVC 区域中的 Web 窗体中使用母版页

    我已将 MVC 区域添加到现有的 Web 窗体项目中 我想在 MVC 项目的所有视图中使用母版页 我不明白我应该如何引用 MVC 区域内的 WebForms 的 MasterPage 我读过这两篇文章 http www hanselman
  • Mercurial 变基场景

    我读过变基项目 http mercurial selenic com wiki RebaseProject页面并尝试了一个不平凡的例子 不是对一个完整的分支进行变基 和这个案例很相似重新建立 D 基础 我场景 B 的情况 这是 rebase
  • Android:如何在onStop之后返回具有“noHistory”属性的Activity?

    我正在寻找一种从历史堆栈中删除某个活动的方法 并找到了解决方案这里 瓦卡斯的回答 https stackoverflow com questions 1898886 removing an activity from the history
  • 续集上的belongsToMany会自动创建新的连接表吗?

    我对这个续集很陌生 我尝试使用belongsToMany通过UserPermissions在用户和权限之间关联模型 这是我的代码 用户 js const bcrypt require bcrypt const config require
  • 如何使用 JavaScript 正则表达式从推文中提取 URL?

    假设我将推文作为字符串存储在 JS 变量中 如何使用 JavaScript 正则表达式从推文中提取 URL 这应该比从字符串中提取 URL 容易得多 因为 我假设任何以 http 或 www 开头并以空格 或推文结尾 结尾的内容都是 URL