gpt4 book ai didi

java - 用于匹配不结尾或包含文件扩展名的字符串的正则表达式

转载 作者:行者123 更新时间:2023-12-01 16:51:38 24 4
gpt4 key购买 nike

在 Java 应用程序中,我需要编写一个包含 URI 正则表达式的 String,以便 URI 不包含像 .js? 这样的字符序列>.css?.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"

最佳答案

在否定前瞻中使用两个交替:

^(?!.*\.(js|css|jpg)($|\?)).*

此正则表达式匹配有效输入。在java中:

if (url.matches("^(?!.*\\.(js|css|jpg)($|\\?)).*")
// url is OK

如果您想匹配无效输入,请使用正向预测:

if (url.matches("^(?=.*\\.(js|css|jpg)($|\\?)).*")
// url is not OK

关于java - 用于匹配不结尾或包含文件扩展名的字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39007246/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com