带有端口验证的 URL 的正则表达式

标签 regex

我需要像网络服务器那样验证一个 url。 类似于 http://localhost:8080/xyz

我们如何使用正则表达式来做到这一点。抱歉,刚接触正则表达式。

最佳答案

相关规范可在rfc 3986中找到并包括所有可能的 url 组件的常规语法定义。但是,就您的目的而言,这些可能过于笼统。在 http(s) 协议(protocol)下仅匹配 url 的某种压缩表达式将是

http[s]?://(([[:alpha:][:digit:]-._~!$&'\(\)*+,;=]|%([0 -9A-F]{2}))+|([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0 -9]|25[0-5]))(:[0-9]+)?(/([[:alpha:][:digit:]-._~!$&'\(\)*+ ,;=]|%([0-9A-F]{2}))*)+(\?([[:alpha:][:digit:]-._~!$&'\(\)* +,;=/?]|%([0-9A-F]{2}))+)?(#([[:alpha:][:digit:]-._~!$&'\(\)*+,;=/?]|%([0-9A-F]{2}))+)?

可以简化为

http[s]?://(([^/:\.[:space:]]+(\.[^/:\.[:space:]]+)*)|( [0-9](\.[0-9]{3})))(:[0-9]+)?((/[^?#[:space:]]+)(\?[^# [:space:]]+)?(\#.+)?)?

以防您对 url 组件的正确语法有信心。

请注意,您可能希望使用更多限制性模式,例如用于全文搜索并仅允许 iana 注册的顶级域。

希望对你有帮助

最好的问候,卡斯滕

关于带有端口验证的 URL 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6321458/

相关文章:

javascript - 如何使用 Javascript 正则表达式按设定顺序匹配子字符串

javascript - 使用正则表达式来分割数组中的值,模式只起作用一半的时间

c# - 正则表达式中的字符(包括换行符)模式是什么?

regex - 排除正则表达式匹配中的字符串,以进行 sed 处理

javascript - 在正则表达式中查找某些数字(时间格式)之前的空格

c# - C# 中的 Regex.Split 命令

C++ 中的正则表达式转义

javascript - 为什么此模式不适用于 knockout validation ? (分隔的邮政编码)

regex - 如何用@ 替换 'at'

ruby - 为什么这两个不同的正则表达式根据下划线的位置在 Ruby 中返回不同的结果