gpt4 book ai didi

java - 用于提取有效 Http 或 Https 的正则表达式

转载 作者:行者123 更新时间:2023-11-30 04:31:24 25 4
gpt4 key购买 nike

我目前在使用正则表达式提取 URL 时遇到一些问题。

我希望我的正则表达式采用如下 URL:

http://stackoverflow.com/questions/ask
https://stackoverflow.com
http://local:1000
https://local:1000

通过一些教程,我了解到这个正则表达式将找到以上所有内容: ^(http|https)\://.*$ 但是,它也需要 http ://local:1000;http://invalid http://khttp://作为单个字符串,而它根本不应该接受它。

我知道我的表达式并不是为了排除这种情况而编写的,但我的问题是我无法想到如何编写它,因此它会检查这种情况。

非常感谢任何帮助!

编辑:

看看我的问题,只要我可以实现检查以确保在初始 http://或 https://之后不会出现“//”,我似乎就可以消除我的问题,关于如何实现的任何想法?

抱歉,这将使用 Java 完成

我还需要添加以下约束:由于端口重复,诸如 http://local:80/test:90 之类的字符串失败...又名我需要一个限制,仅允许有效字符串中总共有两个 : 符号(一个在 http/s 之后),一个在端口之前。

最佳答案

只有在字符串中第一次出现后没有 :// 时,才会产生匹配。

^https?:\/\/(?!.*:\/\/)\S+

请注意,尝试从字符串中解析有效的 url 非常复杂,请参阅
In search of the perfect URL validation regex ,所以上面的内容并没有尝试这样做。
它只会匹配协议(protocol)和后面的非空格字符。

在Java中

Pattern reg = Pattern.compile("^https?:\\/\\/(?!.*:\\/\\/)\\S+");
Matcher m = reg.matcher("http://somesite.com");
if (m.find()) {
System.out.println(m.group());
} else {
System.out.println("No match");
}

关于java - 用于提取有效 Http 或 Https 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14569104/

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