如果您使用Java,我建议使用这个正则表达式(我自己编写的):
^(https?:\/\/)?(www\.)?([\w]+\.)+[\w]{2,63}\/?$
"^(https?:\\/\\/)?(www\.)?([\\w]+\\.)+[\\w]{2,63}\\/?$" // as Java-String
解释如下:
- ^ = 行首
- (https?://)? = 可能出现 "http://" 或 "https://"
- (www.)? = 可能出现 "www."
- ([\w]+.)+ = 必须出现一个单词 ([a-zA-Z0-9]),可以出现一次或多次(如果您需要使用特殊字符如 ü、ä、ö 或其他,请在 URL 中使用 IDN.toASCII(url)。如果您需要知道哪些字符通常是合法的,请参阅 https://kb.ucla.edu/articles/what-characters-can-go-into-a-valid-http-url)
- [\w]{2,63} = 必须出现一个单词 ([a-zA-Z0-9]),长度为 2 到 63 个字符(顶级域名(例如 .com)的长度不能短于 2 个字符或长于 63 个字符)
- /? = 可能出现 "/" 字符(有些人或服务器会在末尾加上 /... 无论如何)
- $ = 行尾
-
如果您需要添加特殊字符,则可能如下所示:
^(https?:\/\/)?(www\.)?([\w\Q$-_+!*'(),%\E]+\.)+[\w]{2,63}\/?$
"^(https?:\\/\\/)?(www\.)?([\\w\\Q$-_+!*'(),%\\E]+\\.)+[\\w]{2,63}\\/?$" // as Java-String
Avinash Raj的答案并不完全正确。
^(http:\/\/|https:\/\/)?(www.)?([a-zA-Z0-9]+).[a-zA-Z0-9]*.[a-z]{3}.?([a-z]+)?$
点号没有被转义,这意味着它可以匹配任何字符。我的版本更简单,我从未听说过像"test..com"这样的域名(实际上也是可匹配的...)。
演示:
https://regex101.com/r/vM7wT6/279
编辑:
因为我看到有些人需要一个也匹配服务器目录的正则表达式,所以我写了这个:
^(https?:\/\/)?([\w\Q$-_+!*'(),
虽然这可能不是最好的方法,因为我没有太多时间去研究,但它或许可以帮助一些人。你可以在这里查看它的工作方式:https://regex101.com/r/vM7wT6/700。
它还可以匹配像“hello.to/test/whatever.cgi”这样的URL。
"http://"
"https://"
"www."
"google.com"
吗? - Scary Wombat