匹配 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中文网其他相关文章!