gpt4 book ai didi

java - 我在这个正则表达式中做错了什么?

转载 作者:行者123 更新时间:2023-12-04 17:17:58 25 4
gpt4 key购买 nike

我有一份关于正则表达式的学校作业。我先解释一下。

我必须编写一个正则表达式来检查 URL,我必须检查的条件是:

  • URL 是 http(s) 还是 ftp(s)?

  • 域名是 .nl 还是 .edu?

  • 至少有一个三级域名,但如果域名以万维网。必须有一个四级域。

这是我目前拥有的正则表达式:

(https?|ftps?):\/\/(www\.)?[a-z]+\.[a-z]+\.(nl|edu)$

我的网址是:

http://www.lib.hva.nl

该 URL 当前通过正则表达式,但是当我删除 .lib 或 .hva 时它仍然通过,这不应该发生。当有 www.在域中域应该有四个级别。有人可以帮我解决这个问题吗?

最佳答案

这可以在 (www\.)? 之后使用所有格量词 + 来解决。

(https?|ftps?):\/\/(www\.)?+[a-z]+\.[a-z]+\.(nl|edu)$

解释

(https?|ftps?):\/\/(www\.)?[a-z]+\.[a-z]+\.(nl|edu)$

匹配

http://www.lib.nl

因为引擎回溯失败后直到 (www\.)? 并且 [a-z]+. 也匹配 www. 匹配成功, 为了避免回溯(www\.)?,可以使用所有格量词。

其他选项可以是使用否定前瞻或原子组(如在 regex101 链接中)。

can be checked on regex101

关于java - 我在这个正则表达式中做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48208993/

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