JavaScript 正则表达式将 URL 和电子邮件包装在锚点中

2023-12-07

我四处搜寻,但无法找到明确的答案。正则表达式经常出现这种情况。所以我想我会在这里问。

我正在尝试组合一个可以在 JavaScript 中使用的正则表达式,以用指向它们的锚标记替换 URL 和电子邮件地址的所有实例(不需要如此严格)。

显然,这通常在服务器端完成,非常简单,但在这种情况下,有必要使用纯文本,因此在运行时执行替换的优雅 JavaScript 解决方案将是完美的。

唯一的问题是,正如我之前所说,我的技能中有一个巨大的正则表达式形状的缺口:(

我知道你们中的一个人已经在指尖找到了答案:)


好吧,盲目地使用正则表达式http://www.osix.net/modules/article/?id=586

var emailRegex = 
   new RegExp(
   '([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}' + 
   '\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.' + 
   ')+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)',
   "gi");

var urlRegex = 
   new RegExp(
   '((https?://)' + 
   '?(([0-9a-z_!~*\'().&=+$%-]+: )?[0-9a-z_!~*\'().&=+$%-]+@)?' + //user@ 
   '(([0-9]{1,3}\.){3}[0-9]{1,3}' + // IP- 199.194.52.184 
   '|' + // allows either IP or domain 
   '([0-9a-z_!~*\'()-]+\.)*' + // tertiary domain(s)- www. 
   '([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\.' + // second level domain 
   '[a-z]{2,6})' + // first level domain- .com or .museum 
   '(:[0-9]{1,4})?' + // port number- :80 
   '((/?)|' + // a slash isn't required if there is no file name 
   '(/[0-9a-z_!~*\'().;?:@&=+$,%#-]+)+/?))',
   "gi");

then

text.replace(emailRegex, "<a href='mailto::$1'>$1</a>");

and

text.replace(urlRegex, "<a href='$1'>$1</a>");

可能会工作

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

JavaScript 正则表达式将 URL 和电子邮件包装在锚点中 的相关文章

  • javascript 中的类型安全或如何避免很难检测到类型相关的错误

    我来自 Java 世界 即类型安全的世界 现在正在做一些需要使用 JavaScript 进行客户端执行的事情 由于 JS 的非典型化 我有时会遇到很难检测到错误的情况 我想知道是否有任何方法可以提前阻止它 例如 设置诸如 使用典型化 之类的
  • Perl:Chomping字符串后,它不打印字符串的值

    所以我目前正在尝试编写一个 perl 脚本来读取一个文件并写入另一个文件 目前 我遇到的问题是从解析的行中删除换行符 我输入这样的文件 BetteDavisFilms txt 1 Wicked Stepmother 1989 as Mira
  • 使用 JS 和 HTML 将当前 URL 插入链接

    所以 我已经阅读了类似的内容 但我仍然找不到更适合我正在做的事情的答案 我正在尝试使用 JS 获取当前页面 URL 并将其附加到社交媒体共享链接 如下所示 a href target blank 使用 Javascript 我成功地将当前
  • Mocha / Chai Expect.to.throw 未捕获抛出的错误

    我在获取 Chai 时遇到问题expect to throw测试我的 node js 应用程序 测试在抛出的错误上不断失败 但是如果我将测试用例包装在 try 和 catch 中 并对捕获的错误进行断言 它就会起作用 Does expect
  • 元素上的 jQuery touchSwipe 事件阻止滚动

    我有一些清单div元素垂直排序 使用jQuery TouchSwipe 插件 https github com mattbryson TouchSwipe Jquery Plugin添加了滑动事件来捕获左右滑动 想法是通过向左或向右滑动来从
  • 如何从回调函数中获取值

    我对 javascript 比较陌生 并且面临一些困难 我有两个 java 脚本文件 如下所示 我无法获取变量的值条目标题在 getRss 函数内并将其存储在变量内Rss1 标题 and Rss2 标题 创建一个全局变量并将其分配给条目标题
  • Imperavi Redactor 内容未复制到隐藏文本区域

    我正在尝试使用因佩拉维编辑器 http imperavi com redactor 在这里控制我的富文本编辑 div class control group div class controls div div document ready
  • 如果只有一个元素发生变化,为什么 AngularJs 会更新数组/哈希映射的所有元素?

    我有一个简单的哈希图和一个以文本形式显示状态的简单方法 但是当我仅更新 1 个用户状态时 所有这些状态都会更新 为所有用户调用函数 有没有一种方法可以只更新一个元素而不是全部 示例代码在这里 只需看看当您单击 更改状态 按钮时控制台中会发生
  • navigator.platform 在 ARM Mac 上的价值是什么?

    苹果有released https www apple com apple events november 2020 几款基于采用 ARM 架构的 M1 芯片的新计算机 与之前基于 x86 架构的计算机相比 的价值是多少navigator
  • 不明白为什么 Chrome/Safari 无法在此处获取 ScrollHeight

    我只是问了一个问题 为什么某些 js 代码不能 100 在 Chrome 和 Safari 中工作 但经过更多故障排除后 我想我发现这是我应该发布的问题 我有一个页面 其中有一个表单 该表单的目标是同一页面上的 iframe iframe
  • 解密Javascript源代码[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我已经编写了一段 JavaScrip
  • 如何使 Loopback 模型事件起作用?

    我尝试过一个例子http apidocs strongloop com loopback model http apidocs strongloop com loopback model MyModel on changed functio
  • 需要了解Javascript函数提升示例

    我阅读了 Javascript 提升的概念 它非常令人困惑 但我看到了一些示例并了解了提升的实际作用 所以基本上 提升是 JavaScript 的默认行为 即将所有声明移动到当前作用域的顶部 当前脚本或当前函数的顶部 但我无法理解以下实现
  • 在没有全局变量的情况下对多个事件使用 Promise 回调

    我有一个包含在函数中的承诺 我将使用不同的输入参数多次调用该函数 每次承诺解决时 我都会将解决的值推送到存储数组中 当我所有的调用承诺都得到解决后 我将在其他函数中使用这个存储数组 是否有任何干净的方法可以在不使用 全局 变量的情况下进行设
  • 如何在 ES6 类中使用静态变量?

    我正在尝试在 es6 中使用静态变量 我想声明一个静态变量count in Animal类并增加它 但是 我无法通过声明静态变量static count 0 所以我尝试了另一种方法 class Animal constructor this
  • 删除删除线的 unicode 文本?

    我偶尔会收到用户的输入 他们正在使用那些烦人的 stikethrough 文本生成器 这破坏了我的代码 我尝试过在这里找到的一些代码 string preg replace x00 x1F x80 xFF string 它有效 但我需要它只
  • 将回调函数与原型函数一起使用

    在执行回调时 我无法弄清楚如何传递对象方法而不是排序 通用原型 方法 function Client this name hello Client prototype apiCall function method params callb
  • Rails 6 webpack 抛出“未捕获的引用错误:$未定义”

    大家好 我最近开始使用 ruby 2 6 5 开发 Rails 6 由于 Rails 6 引入了 webpack 所以我尝试使用 webpack 加载我的 js 文件 尽管我已经在 appliation js 中需要了 jquery 但我仍
  • 谷歌地图通过骨干javascript返回div标签但不显示

    我已经开始使用地理定位 我可以获得坐标等 我想在地图中显示它 但是当我将地图返回到 div 时 什么也没有显示 现在我查看了 div 地图正在返回 但只是不可见 这是有问题的 div 请注意 这似乎只是一个小地图的链接 a style di
  • 1° 夏令时 Java 和 JS 表现出不同的行为

    假设巴西利亚 GMT 0300 夏令时于 21 10 2012 00 00 00 此时时钟应提前一小时 Java new Date 2012 1900 9 21 0 0 0 Sun Oct 21 01 00 00 BRST 2012 Chr

随机推荐

  • 批处理文件中的字符串替换

    我们可以使用以下命令替换批处理文件中的字符串 set str jump over the chair set str str chair table 这些行工作正常 并将字符串 jump over the chair 更改为 jump ov
  • Google 地图 API 错误:此 API 密钥无权使用此服务或 API。地点 API 错误:ApiTargetBlockedMapError

    我开始从我使用的 CMS 内的 Google 地图小部件收到此错误 This API key is not authorized to use this service or API Places API error ApiTargetBl
  • 在 Python 中生成 CSR

    我正在尝试在 Python 中生成 CSR 而不使用 OpenSSL 如果有人能指出正确的方向 我将非常感激 我假设你不想使用命令行 openssl 本身 Python 库就可以了 这是我编写的用于创建 CSR 的辅助函数 它从生成的密钥对
  • ConvertTimeFromUTC,处理澳大利亚夏令时

    我有以下代码 我有一位位于澳大利亚堪培拉的客户 它们通常是 UTC 10 但现在处于 DST 所以是 UTC 11 奇怪的是 当我运行此代码时 它没有考虑 DST 我认为 ConvertTimeFromUTC 可以处理 DST 我正在路过E
  • 使用 Xcode、Swift3 的 iOS Rich Push 通知但无法获取图像

    我正在尝试使用 Xcode Swift3 创建 iOS 丰富推送通知 我已经使用 php 的curl 命令确定推送通知 主题 正文 但我无法创建引用的丰富推送通知在本文件中 我添加了通知服务扩展 如下所示 File New Target N
  • JTextArea 中的行

    有没有可靠的方法来计算 JTextArea 中字符串如何划分为行 我有一个固定宽度的 JTextArea 当它被填充时 会添加一个新行并垂直扩展 现在 我需要确切地知道哪些字符位于哪一行 我可以使用字体规格来添加单个字符宽度 但我不知道这是
  • 如何对表中特定数量的行进行着色?

    如何仅对特定数量的行进行着色 这里我的显示屏只有前 7 行是白色的 其余的是灰色的 我想要 7 条白色线 7 条灰色线 7 条白色线 7 条灰色线等等 你可以尝试这样的事情 table gt span height 20px width 2
  • 将 php 变量添加到 css 语句中!

    我想在我的 css 样式声明中包含以下内容 是否可以
  • 如果表2中不存在,如何插入到表1中?

    我是mysql新手 如果 table2 中不存在记录 则将记录插入到 table1 时出现问题 我有 2 个表 table1 和 table2 其形式为 table1 dep id start stop modified deleted 1
  • 是否可以在Python中创建特定目录的快捷方式?

    我查了一下 inetrnet 但没有发现任何相关内容 所以我在这里问 是否可以使用 python 创建文件的快捷方式并将其放入我选择的特定目录中 例如 我在 C 中有一个名为 EXAMPLE 的文件夹 我想自动创建谷歌浏览器的快捷方式并将其
  • 我可以序列化 ruby​​ Digest::SHA1 实例对象吗?

    大家好 我正在 ruby sinatra 中重新实现现有的自定义文件上传服务 并使用 redis 作为后备存储 客户 计算 SHA1 哈希并启动上传 上传最多 64K 块直至完成 服务器 将块附加到文件 计算完整文件的 SHA1 哈希值以验
  • 在 Ansible 中,如何将活动角色的变量组合到一个数组中?

    看着 在 Ansible 中 如何将不同文件中的变量合并到一个数组中 答案之一建议使用包含变量要将多个来源的变量放入一个数组中 这是almost我需要什么 但不完全是 我正在设置 cloudfront logging 它需要 a 中的项目a
  • Qt 使应用程序始终位于 Weston/Wayland 平台之上

    我想在 Wayland Weston 桌面系统中安排两个应用程序的焦点 两个应用是 用 Qt QML 编写 全屏 使用 Wayland 客户端 API OpenGL 编写 全屏 我想让 App 1 始终位于顶部 App 2 始终位于底部 即
  • 使用 ElementTree 从混合元素 xml 标签中获取文本

    我正在使用 ElementTree 来解析我拥有的 XML 文档 我从以下位置获取文本u标签 其中一些包含混合内容 我需要过滤掉或保留为文本 我有两个例子 u u
  • 删除 id=".xxx" 的 div 或 span

    我无法删除 id 带有句点或星号的 div div div div div 我有 jquery 代码 它删除了 div div 但不是上面的 不是在寻找 jQuery 代码 但它需要正斜杠吗 来自 anurag 的请求 JavaScript
  • 回调到可变的 self

    有没有一种方法 在 Rust 中 可以将可变的借用自我发送到回调而不需要mem replace我在以下 MWE 中使用的 hack 我正在使用 Rust stable 1 11 0 use std mem trait Actable fn
  • 如何在强制推送基础分支后更新我的功能分支。我们只使用rebase,禁止合并

    我们正在使用 git 中的一个非常简单的结构 首先我们有我们的master branch 下面我们有develop 最后我们可以有任何feature branch 我们仅使用 rebase 来更新分支上的历史记录 然后转发到上述分支 每周
  • 集合编辑器未针对 TPersistent 属性中的 TCollection 属性打开

    我有我的自定义集合属性 当它是我的组件的直接成员时 它工作得很好 但我想将集合属性移动到组件内的 TPersistent 属性 现在问题来了 它不起作用 双击对象检查器中的集合属性通常会打开集合编辑器 但现在不再这样了 首先 我应该将什么传
  • 我的华为手机如何设置这个配置?

    我的问题是 在我的华为手机上 我的服务被终止 所以我需要更改手机上的设置 我的问题与this 注意 华为和小米设备具有邪恶的任务杀手服务 会干扰 Telegram 通知服务 为了让我们的通知发挥作用 您需要将 Telegram 添加到这些设
  • JavaScript 正则表达式将 URL 和电子邮件包装在锚点中

    我四处搜寻 但无法找到明确的答案 正则表达式经常出现这种情况 所以我想我会在这里问 我正在尝试组合一个可以在 JavaScript 中使用的正则表达式 以用指向它们的锚标记替换 URL 和电子邮件地址的所有实例 不需要如此严格 显然 这通常