我正在寻找一个正则表达式来排除我不喜欢的扩展程序中的网址。
例如,应排除以.css
,.js
,.font
,.png
,.jpg
等结尾的资源。
但是,我可以将所有资源放到同一文件夹中,并尝试将URL排除到此文件夹,例如:
.*\/(?!content\/media)\/.*
但那不起作用!如何改进此正则表达式以符合我的标准?
e.g。
匹配:
http://www.myapp.com/xyzOranotherContextRoot/rest/user/get/123?some=par#/other
不匹配:
http://www.myapp.com/xyzOranotherContextRoot/content/media/css/main.css?7892843
答案 0 :(得分:1)
正确的解决方案是:
^((?!\/content\/media\/).)*$
请参阅:https://regex101.com/r/bD0iD9/4
Regular expression to match a line that doesn't contain a word?
的灵魂答案 1 :(得分:0)
两件事:
首先,?!
否定前瞻不会从输入中删除任何字符。在尾部斜杠之前添加[^\/]+
。现在它正试图匹配两个连续斜线。例如:
.*\/(?!content\/media)[^\/]+\/.*
(编辑)其次,开头和结尾的.*
匹配太多。尝试收紧,或向content\/media
添加更多详细信息。按照目前的情况,content/media
可以吞噬.*
,并且永远不会对前瞻进行检查。
建议:
^.*\.(?!css|js|font|png|jpeg)[a-z0-9]+$
(不区分大小写)。https?:\/\/\S\+
,或许?)然后使用String.indexOf
测试每个URL:{{1 }}