作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一份关于正则表达式的学校作业。我先解释一下。
我必须编写一个正则表达式来检查 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 链接中)。
关于java - 我在这个正则表达式中做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48208993/
我是一名优秀的程序员,十分优秀!