首页 > web前端 > js教程 > 如何创建强大的正则表达式来匹配带或不带协议前缀的 URL?

如何创建强大的正则表达式来匹配带或不带协议前缀的 URL?

Barbara Streisand
发布: 2024-12-24 05:54:17
原创
968 人浏览过

How Can I Create Robust Regular Expressions to Match URLs with and without Protocol Prefixes?

匹配 URL:一种综合的正则表达式方法

从输入中提取 URL 时,拥有一个强大的正则表达式来处理各种情况至关重要。场景。在这种情况下,提供的正则表达式无法匹配不带“http”或“https”协议前缀的 URL。为了应对这一挑战,我们提出了两种替代正则表达式:

对于需要 HTTP/HTTPS 协议的 URL:

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

对于没有 HTTP 的 URL /HTTPS 协议要求:

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

这些正则表达式有效捕获带或不带协议前缀的 URL。出于实验目的,您可以在 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");
}
登录后复制

以上是如何创建强大的正则表达式来匹配带或不带协议前缀的 URL?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板