gpt4 book ai didi

regex - 如何使以下正则表达式也匹配

转载 作者:行者123 更新时间:2023-12-04 00:13:31 26 4
gpt4 key购买 nike

我有以下正则表达式:

/^(https?:\/\/)(.+\.)?(.+)(\..*)$/gm

名单是:

https://localhost
https://www.example.com
https://www.subdomain.example.com
https://example.com
http://example.com
http://example..com
http://....example.com

匹配:

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

问题是,我想匹配https://localhost,我不想匹配:

http://example..com
http://....example.com

为什么我不只使用 /^https?:\/\/.+$/gm?因为我需要分组捕捉它们。因此,我的意思是:

对于 https://www.subdomain.example.com

Group 1: https://
Group 2: www.subdomain.
Group 3: example
Group 4: .com

对于 https://localhost,它会是:

Group 1: https://
Group 3: localhost

对于https://www.example.com:

Group 1: https://
Group 2: www.
Group 3: example
Group 4: .com

所以,在:

https://localhost
https://www.example.com
https://www.subdomain.example.com
https://example.com
http://example.com
http://example..com
http://....example.com

我只想匹配:

https://localhost
https://www.example.com
https://www.subdomain.example.com
https://example.com
http://example.com

顺便说一句,它不应该匹配无效的网址:

http:
https://

只有完整的网址。

顺便说一句,任何子域。

这是一个链接:https://regex101.com/r/z7V33F/1

我怎样才能做到这一点?

最佳答案

你可以使用这个正则表达式:

^(https?://)((?:[\w-]+\.){0,2}?)([^.]+)(\.[^.]+)?$

RegEx Demo

正则表达式详细信息:

  • ^ : 开始
  • (https?://) : 匹配 https://http://并在第 1 组中捕获
  • ((?:[\w-]+\.){0,2}?) : 匹配域的第一部分并在 optional group #2
  • 中捕获
  • ([^.]+) : 匹配域名的第 (last-1) 部分并在第 3 组中捕获
  • (\.[^.]+)? : 匹配域的最后一部分并在 *optional& group #4 中捕获
  • $ : 结束

关于regex - 如何使以下正则表达式也匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66103906/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com