我正在尝试匹配一个简单的域名:example.com
但是它的所有组合。
我如何做到这一点:
https://example.com http://www.example.com etc.
答案 0 :(得分:10)
^https?://([\w\d]+\.)?example\.com$
使用代码:
var result = /^https?:\/\/([a-zA-Z\d-]+\.){0,}example\.com$/.test('https://example.com');
// result is either true of false
我改进了它以匹配“http://a.b.example.com”
答案 1 :(得分:4)
您可以使用以匹配网址的域名部分:
/^(?:http(?:s)?:\/\/)?(?:[^\.]+\.)?example\.com$/
它将匹配以下任何字符串:
https://example.com
http://www.example.com
http://example.com
https://example.com
www.example.com
example.com
更新:要匹配完整网址,而不仅仅是域名部分,请使用:
/^(?:http(?:s)?:\/\/)?(?:[^\.]+\.)?example\.com(\/.*)?$
答案 2 :(得分:4)
我使用的更通用的例子:
/http(?:s)?:\/\/(?:[\w-]+\.)*([\w-]{1,63})(?:\.(?:\w{3}|\w{2}))(?:$|\/)/i
请注意,此解决方案没有为5个字符的TLD选择正确的标签。例如:
http://mylabel.co.uk
将被选为'co'而不是'mylabel',但
http://mylabel.co
将正确匹配为“mylabel”。即使有这个限制,正则表达式也足够好了。
请注意,标签的63个字符限制是RFC规范。希望这有助于任何人在将来寻找相同的答案。
答案 3 :(得分:2)
以下适用于Java,
^(http:|https:|)[/][/]([^/]+[.])*example.com$
并匹配您的测试用例,不匹配
等案例答案 4 :(得分:2)
这将正确匹配以下任何变体的网址,以及.com之后的任何内容
https://example.com
https://www.example.com
http://www.example.com
http://example.com
https://example.com
www.example.com
example.com
结果将为true或false
const result = /^(http(s)?(:\/\/))?(www\.)?example\.com(\/.*)?$/.test(value);
答案 5 :(得分:0)
下面的exp在第一部分中与http / htpps / ftp匹配,尽管它也可以匹配随机的5个字母的单词,例如 ahfzc ,但这很少出现它们将在exp的后面部分被忽略
第二部分与ww / www匹配,最后一部分与以'。'分隔的任何字母数字匹配。最后一部分匹配.com,.in,.org等任意3个字符。
尝试
r'[a-z0-9]{0,5}[\:\/]+[w]{0,3}[\.]+[a-z0-9\-]+[\.]+[a-z0-9]{0,3}'