我需要配置一个反向标准的网址匹配模式。
/endpoint/300[0-9]+ -> These should not match and everything else should match.
我正在尝试用\/endpoint\/(?!^300)\d+进行负面回顾,但效果不太好。有人能解释一下我错过了什么吗?
\/endpoint\/(?!^300)\d+
bvn4nwqk1#
只需对所有可能的值求反:
public static void main(String[] args) { String pattern = "/endpoint/(?:3|[^3].*|30|3[^0].*|300|30[^0].*|300[^0-9].*)"; Stream.of( "/endpoint/asdf", "/endpoint/3008", "/endpoint/300b", "/endpoint/30", "/endpoint/3", "/endpoint/2999" ).forEach(it -> { System.out.println(it + " -> " + it.matches(pattern)); }); }
标准输出:
/endpoint/asdf -> true /endpoint/3008 -> false /endpoint/300b -> true /endpoint/30 -> true /endpoint/3 -> true /endpoint/2999 -> true
然而,如果你需要否定"/endpoint/"部分太-坏消息,你将需要否定它同样的方式。
"/endpoint/"
1条答案
按热度按时间bvn4nwqk1#
只需对所有可能的值求反:
标准输出:
然而,如果你需要否定
"/endpoint/"
部分太-坏消息,你将需要否定它同样的方式。