”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何使用正则表达式检测 URL(包括裸 URL)?

如何使用正则表达式检测 URL(包括裸 URL)?

发布于2024-12-20
浏览:351

How Can I Use Regular Expressions to Detect URLs, Including Naked URLs?

使用正则表达式检测 URL

您当前的代码无法匹配缺少“http://”前缀的裸 URL。为了解决这个问题,可以考虑采用综合正则表达式:

https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\ ~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\ .~#?&//=]*)

此增强型表达式包括以下功能:

  • 它确保 URL 以“http://”、“ https://”,或什么都没有。
  • 它允许通过包含“(www.)”作为可选前缀来创建子域。
  • 它支持最多 256 个字符的域名长度和顶级域最多 6 个字符。

对于那些在匹配中不需要 HTTP 协议的人,可以使用替代表达式:

[-a-zA-Z0-9@:%._\ ~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\ .~#?&//=]*)

要演示这些表达式的功能,请查看在线测试工具:http://regexr.com?37i6s(对于第一个表达式)或http://regexr.com/3e6m0(对于限制性较小的表达式)。

这是使用更全面的正则表达式的 JavaScript 实现示例:

const expression = /[-a-zA-Z0-9@:%._\ ~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\ .~#?&//=]*)/gi;
const regex = new RegExp(expression);
const t = 'www.google.com';

if (t.match(regex)) {
  alert("Successful match");
} else {
  alert("No match");
}
最新教程 更多>
  • 如何在GO编译器中自定义编译优化?
    如何在GO编译器中自定义编译优化?
    在GO编译器中自定义编译优化 GO中的默认编译过程遵循特定的优化策略。 However, users may need to adjust these optimizations for specific requirements.Optimization Control in Go Compi...
    编程 发布于2025-04-13
  • 为什么在我的Linux服务器上安装Archive_Zip后,我找不到“ class \” class \'ziparchive \'错误?
    为什么在我的Linux服务器上安装Archive_Zip后,我找不到“ class \” class \'ziparchive \'错误?
    Class 'ZipArchive' Not Found Error While Installing Archive_Zip on Linux ServerSymptom:When attempting to run a script that utilizes the ZipAr...
    编程 发布于2025-04-13
  • 如何使用不同数量列的联合数据库表?
    如何使用不同数量列的联合数据库表?
    合并列数不同的表 当尝试合并列数不同的数据库表时,可能会遇到挑战。一种直接的方法是在列数较少的表中,为缺失的列追加空值。 例如,考虑两个表,表 A 和表 B,其中表 A 的列数多于表 B。为了合并这些表,同时处理表 B 中缺失的列,请按照以下步骤操作: 确定表 B 中缺失的列,并将它们添加到表的末...
    编程 发布于2025-04-13
  • 如何使用Python有效地以相反顺序读取大型文件?
    如何使用Python有效地以相反顺序读取大型文件?
    在python 中,如果您使用一个大文件,并且需要从最后一行读取其内容,则在第一行到第一行,Python的内置功能可能不合适。这是解决此任务的有效解决方案:反向行读取器生成器 == ord('\ n'): 缓冲区=缓冲区[:-1] ...
    编程 发布于2025-04-13
  • 如何使用替换指令在GO MOD中解析模块路径差异?
    如何使用替换指令在GO MOD中解析模块路径差异?
    在使用GO MOD时,在GO MOD 中克服模块路径差异时,可能会遇到冲突,其中可能会遇到一个冲突,其中3派对软件包将另一个带有导入套件的path package the Imptioned package the Imptioned package the Imported tocted pac...
    编程 发布于2025-04-13
  • 在细胞编辑后,如何维护自定义的JTable细胞渲染?
    在细胞编辑后,如何维护自定义的JTable细胞渲染?
    在JTable中维护jtable单元格渲染后,在JTable中,在JTable中实现自定义单元格渲染和编辑功能可以增强用户体验。但是,至关重要的是要确保即使在编辑操作后也保留所需的格式。在设置用于格式化“价格”列的“价格”列,用户遇到的数字格式丢失的“价格”列的“价格”之后,问题在设置自定义单元格...
    编程 发布于2025-04-13
  • HTML格式标签
    HTML格式标签
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    编程 发布于2025-04-13
  • Go语言中如何高效地将字符串转换为字节数组?
    Go语言中如何高效地将字符串转换为字节数组?
    访问字符串值作为bytes 访问字节阵列允许低级数据操作和对二进制数据的操纵。实现此目的的一种方法是利用一个循环在字符串中的字节范围内迭代,将每个字节分配给字节数组中的等效索引。 package main 进口 ( “ FMT” ) func main(){ var arr [20...
    编程 发布于2025-04-13
  • 找到最大计数时,如何解决mySQL中的“组函数\”错误的“无效使用”?
    找到最大计数时,如何解决mySQL中的“组函数\”错误的“无效使用”?
    如何在mySQL中使用mySql 检索最大计数,您可能会遇到一个问题,您可能会在尝试使用以下命令:理解错误正确找到由名称列分组的值的最大计数,请使用以下修改后的查询: 计数(*)为c 来自EMP1 按名称组 c desc订购 限制1 查询说明 select语句提取名称列和每个名称...
    编程 发布于2025-04-13
  • PHP阵列键值异常:了解07和08的好奇情况
    PHP阵列键值异常:了解07和08的好奇情况
    PHP数组键值问题,使用07&08 在给定数月的数组中,键值07和08呈现令人困惑的行为时,就会出现一个不寻常的问题。运行print_r($月)返回意外结果:键“ 07”丢失,而键“ 08”分配给了9月的值。此问题源于PHP对领先零的解释。当一个数字带有0(例如07或08)的前缀时,PHP将其...
    编程 发布于2025-04-13
  • 如何有效地转换PHP中的时区?
    如何有效地转换PHP中的时区?
    在PHP 利用dateTime对象和functions DateTime对象及其相应的功能别名为时区转换提供方便的方法。例如: //定义用户的时区 date_default_timezone_set('欧洲/伦敦'); //创建DateTime对象 $ dateTime = ne...
    编程 发布于2025-04-13
  • C#中如何从DateTime对象中移除时间部分?
    C#中如何从DateTime对象中移除时间部分?
    [2 [2 本指南演示了如何从C#中的DateTime对象中删除时间组件而不将其转换为字符串。 解决方案: 利用 dateTime 结构的属性:的属性 dateTime dateAndTime = dateTime.now; dateTime dateonly = dateAndTime.date...
    编程 发布于2025-04-13
  • CSS属性选择器:引号用还是不用?
    CSS属性选择器:引号用还是不用?
    Attribute Selectors in CSS: Quotation Mark ConundrumWhen crafting CSS attribute selectors to match elements' attributes, such as a[rel="nofol...
    编程 发布于2025-04-13
  • Python 3中如何将字典键提取为列表?
    Python 3中如何将字典键提取为列表?
    在Python 3 中将键提取为列表中的列表,在Python 2.7中将键提取为列表,从而简单地获取了字典键,Python 3引入了一个更改,将DICT_KEYS对象返回。可以使用列表理解来克服此更改: list(newdict.keys())在newdict.keys()中为key(): ...
    编程 发布于2025-04-13

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3