用于匹配未结束或包含文件扩展名的字符串的正则表达式
Regex for matching string not ending or containing file extensions
在 Java 应用程序中,我需要编写一个包含 URI 正则表达式的 String
,以便 URI 不包含 .js?
、[=15= 等字符序列] 和 .jpg?
,但也不以 .js
、.css
和 .jpg
结尾
我做了以下内容:
(?:.js|.css|.jpg)$|(?:.js[?]|.html[?]|.jpg[?])
基本上匹配所有以给定文件扩展名结尾或包含文件扩展名加问号的URI。
如何对前面的条件求反?
因此,例如我希望以下 URI 匹配
"/a/fancy/uri/.js/which/is/valid"
但以下两者都不会
"/a/fancy/uri/which/is/invalid.js"
"/a/fancy/uri/which/is/invalid.js?ver=1"
如果您尝试匹配无效的 URL,应该这样做:
String regex = ".*\.(js|css|jpg)($|\?.*)";
System.out.println("/a/fancy/uri/which/is/invalid.js?ver=1".matches(regex));
System.out.println("/a/fancy/uri/which/is/invalid.js".matches(regex));
System.out.println("/a/fancy/uri/.js/which/is/valid".matches(regex));
输出:
true
true
false
在负面展望中使用两个交替:
^(?!.*\.(js|css|jpg)($|\?)).*
此正则表达式匹配 有效 输入。在 java:
if (url.matches("^(?!.*\.(js|css|jpg)($|\?)).*")
// url is OK
如果要匹配无效的输入,使用正向预测:
if (url.matches("^(?=.*\.(js|css|jpg)($|\?)).*")
// url is not OK
在 Java 应用程序中,我需要编写一个包含 URI 正则表达式的 String
,以便 URI 不包含 .js?
、[=15= 等字符序列] 和 .jpg?
,但也不以 .js
、.css
和 .jpg
我做了以下内容:
(?:.js|.css|.jpg)$|(?:.js[?]|.html[?]|.jpg[?])
基本上匹配所有以给定文件扩展名结尾或包含文件扩展名加问号的URI。
如何对前面的条件求反?
因此,例如我希望以下 URI 匹配
"/a/fancy/uri/.js/which/is/valid"
但以下两者都不会
"/a/fancy/uri/which/is/invalid.js"
"/a/fancy/uri/which/is/invalid.js?ver=1"
如果您尝试匹配无效的 URL,应该这样做:
String regex = ".*\.(js|css|jpg)($|\?.*)";
System.out.println("/a/fancy/uri/which/is/invalid.js?ver=1".matches(regex));
System.out.println("/a/fancy/uri/which/is/invalid.js".matches(regex));
System.out.println("/a/fancy/uri/.js/which/is/valid".matches(regex));
输出:
true
true
false
在负面展望中使用两个交替:
^(?!.*\.(js|css|jpg)($|\?)).*
此正则表达式匹配 有效 输入。在 java:
if (url.matches("^(?!.*\.(js|css|jpg)($|\?)).*")
// url is OK
如果要匹配无效的输入,使用正向预测:
if (url.matches("^(?=.*\.(js|css|jpg)($|\?)).*")
// url is not OK