我试图建立一个正则表达式,我尝试过滤网址,只有那些未在我的正则表达式中给出的人才会产生匹配。
如果网址中没有test1.com或test2.com,则会导致匹配。
我希望不会导致匹配的顶级域名(test1.com和test2.com)始终使用https协议,可以包含子域名并且在顶级域名后面有路径" .com&#34 ;
最后一次尝试是以下但仍然无效...
https?://([a-z0-9]+[.])((test1)|(test2))[.](com)/.*
regexplanet上的结果:
https://abc.test1.com/test.htm
==> MATCH
www.google.com
==>没有比赛
https://123.test2.com/test.html
==> MATCH
https://test2.com/test.html
==>没有比赛
我是否需要编写正则表达式,其字符串中没有test1.com和test2.com域的所有内容都会匹配?
答案 0 :(得分:2)
这种模式应该有效:
^((?!test1\\.com|test2\\.com).)*$
试试:
System.out.println(Pattern.matches("^((?!test1\\.com|test2\\.com).)*$", "https://abc.test1.com/test.htm"));
System.out.println(Pattern.matches("^((?!test1\\.com|test2\\.com).)*$", "www.google.com"));
System.out.println(Pattern.matches("^((?!test1\\.com|test2\\.com).)*$", "https://123.test2.com/test.html"));
System.out.println(Pattern.matches("^((?!test1\\.com|test2\\.com).)*$", "https://test2.com/test.html"));
结果:
false
true
false
false