我尝试编写正则表达式来检查网址是否包含ci
,ci1
,ci2
或stag
或
如果网址包含/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)\..*
答案 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的错误部分。