regex - 用于验证带有可选端口的 URL 的正则表达式
问题描述
我试图让这个正则表达式拨入以验证 URL 是否以 https 开头,如果提供了端口,则唯一有效的值是 443 或 5443。这个正则表达式非常接近,但不完全在那里。
^(https:\/\/)([a-zA-Z\d\.]{2,})\.([a-zA-Z]{2,})(:5{0,1}443)?(.)*
我该如何解决这个问题?
解决方案
您应该在此可选端口组之后附加 a /
,这样它就不允许在 a 之前有任何数字/
。尝试使用这个正则表达式,
^(https:\/\/)([a-zA-Z\d\.]{2,})\.([a-zA-Z]{2,})(:5?443)?\/\S*
请注意,我也已更改(:5{0,1}443)?
为(:5?443)?
并最后更改.*
为,\S*
因此 url 不会捕获空格,因为 URL 中的空格不是有效的东西。除此之外,你还可以在你的正则表达式中去掉这么多的组,除非你需要它们。
编辑:
正如您在评论中所说,您也想匹配以下网址,
https://example.com
https:example.com
https:example.com:443
\/\S*
您需要通过在它们后面放置一个来使部分可选?
。修改后的正则表达式变成了这个,它将匹配上面的 URL。
^https:\/\/([a-zA-Z\d\.]{2,})\.([a-zA-Z]{2,})(:5?443)?(\/\S*)?
推荐阅读
- php - Finding all unique permutations of an array efficiently
- typescript - 错误:自签名证书尝试使用 vscode 扩展连接到 vis WSS
- powershell - Unable to run bcp command from PowerShell
- java - Java:包含所有十进制值的脚本
- android - NoClassDefFoundError at AppModule.provideViewModelFactories(AppModule.kt)
- sql - 内连接根据 IF-THEN-ELSE 语句从第二个表中仅选择一行
- installation - Glow 编译器安装指南
- mysql - Retrieve the most recent values on records on 3 primary keys mySql
- linux - Bash return code error handling when using heredoc input
- java - 如何从字符串中删除所有出现的子字符串