In einer Java-Anwendung endet oder mit einem Gehalt, ich brauche für URIs, eine String
enthält einen regulären Ausdruck zu schreiben, so dass der URI enthält keine Zeichenfolgen wie .js?
, .css?
und .jpg?
, sind aber auch nicht endend mit .js
, .css
und .jpg
Regex für passende String nicht Dateierweiterungen
ich habe folgende:
(?:.js|.css|.jpg)$|(?:.js[?]|.html[?]|.jpg[?])
, die alle die Endung URIs mit den angegebenen Dateierweiterungen enthalten oder die Dateierweiterung und die qu im Grunde übereinstimmt Estionsmarke.
Wie kann ich die Negation der und der vorherigen Bedingungen tun?
So zum Beispiel erwarte ich, dass die folgende URI
"https://stackoverflow.com/a/fancy/uri/.js/which/is/valid"
entsprechen, werden aber die beiden folgenden wird
nicht"https://stackoverflow.com/a/fancy/uri/which/is/invalid.js"
"https://stackoverflow.com/a/fancy/uri/which/is/invalid.js?ver=1"
Versuchen Sie, ungültige URLs oder gültige URLs übereinstimmen? – shmosel
Sie sollten die URI-Klasse verwenden, um den Pfad zuvor zu extrahieren: http://download.java.net/jdk7/archive/b123/docs/api/java/net/URI.html –
@CasimiretHippolyte kann ich nicht. Siehe meinen Kommentar zur akzeptierten Antwort. Ich verwende es in einer Spring Annotation, um einen Platzhalter zu filtern. –