正则表达式匹配简单域

时间:2012-01-12 05:10:07

标签: regex pattern-matching

我正在尝试匹配一个简单的域名:example.com

但是它的所有组合。

我如何做到这一点:

https://example.com
http://www.example.com
etc.

6 个答案:

答案 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$

并匹配您的测试用例,匹配

等案例
  

http://www.google.com/http://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}'