如何检查URL是否包含/预览或子域是CI?

时间:2016-12-15 19:36:48

标签: java regex

我尝试编写正则表达式来检查网址是否包含cici1ci2stag

如果网址包含/preview

https://regex101.com/r/aKHx9g/2/tests

例如,正则表达式应匹配

http://ci.company.com
http://stag.company.com
http://www.company.com/preview
https://www.company.com/preview

这个不应该匹配

http://www.company.com/article
http://company.com/article
https://company.com/article

不确定正则表达式是否能够捕捉到它?

我似乎无法在正则表达式中做出OR条件。这是我到目前为止所得到的。

https?:\/\/(ci|stag|ci2|ci3)\..*

2 个答案:

答案 0 :(得分:3)

您只需使用String.contains(/*something*/)

即可
if(url.contains("/preview") || url.contains("ci") /*and the other 
    things that you want to check*/){
    //do things accordingly 
}

答案 1 :(得分:2)

要在注册表中执行此操作,您可以使用:

url.toString().matches("https?://(?:stag|ci|ci1|ci2)\\..*|.*/preview")

注意:无需转义/个字符。

(?: ... )会创建一个非捕获组。

但假设您有URL,那么您可能希望使用:

URL url = ...;
if (url.getHost().matches("(?:stag|ci|ci1|ci2)\\..*") ||
    url.getPath().endsWith("/preview")) {
}

将防止匹配URL的错误部分。