我想检查一个 url 是否是图像、java 脚本、pdf 等
字符串 url = "www.something.com/script/sample.js?xyz=xyz;
下面的正则表达式工作正常,但只有 xyz=zyz
".*(mov|jpg|gif|pdf|js)$"
当我在最后删除 $ 以消除 .js 的正则表达式要求时,它会给出错误
使用正则表达式如下:
.*\\.(mov|jpg|gif|pdf|js)\\?
这与dot(.)
您的扩展名匹配,并由?
第一个dot(.)
匹配任何字符,而第二个则在扩展列表之前以match for为dot(.)
前缀。\\
dot(.)
.*(mov|jpg|gif|pdf|js).*$
允许您在文件扩展名之后有任何可选文本。捕获组捕获文件扩展名。你可以在这里看到这个。
为什么不使用 java.net.URL 来解析 url 字符串,它可以避免很多不匹配的问题:
try {
URL url = new URL(urlString);
String filename = url.getFile();
// now test if the filename ends with your desired extensions.
} catch (Exception e) {
// This case the url cannot be parsed.
}
我不是这个的忠实粉丝,但请尝试:
.*\\.(mov|jpg|gif|pdf|js).*$
问题是它会接受像“our.moving.day”这样的东西
并发布您的代码。给猫剥皮的方法总是不止一种,也许你的代码有问题,而不是正则表达式。
另外,尝试正则表达式测试器......那里有很多。我非常喜欢:
http://rubular.com/和http://gskinner.com/RegExr/(但它们主要用于 php/ruby)