首页 > 解决方案 > 完成正则表达式以将 url 与端口号匹配

问题描述

我需要这个正则表达式:

(https?:\/\/(?:w{1,3}.)?[^\s]*?(?:\.[a-z]+)+)(?![^<]*?(?:<\/\w+>|\/?>))

匹配此模式http://localhost:3000或任何具有端口号的 url。

链接到 rubular https://rubular.com/r/tkCOv181H2KJtU

标签: regex

解决方案


模式中有几点需要注意。

您必须在这部分中转义点以匹配它(?:w{1,3}\.)?

如果将点添加到字符类[^\s.]*中,则不必将其设为非贪婪量词。

如果您只想要匹配,则可以省略外部捕获组。

您可以使端口部分可选(?::\d+)?以匹配它:

https?:\/\/(?:w{1,3}\.)?[^\s.]+(?:\.[a-z]+)*(?::\d+)?(?![^<]*(?:<\/\w+>|\/?>))

正则表达式演示


推荐阅读