Skip to content

Instantly share code, notes, and snippets.

@urbels
Created March 14, 2014 10:49
Show Gist options
  • Save urbels/9545586 to your computer and use it in GitHub Desktop.
Save urbels/9545586 to your computer and use it in GitHub Desktop.
Regular expression cheat sheet for Varnish
Regular expression cheat sheet for Varnish
Varnish regular expressions are NOT case sensitive. Varnish uses POSIX
regular expressions, for a complete guide, see: "man 7 regex"
Basic matching:
req.url ~ "searchterm"
True if req.url contains "searchterm" anywhere.
req.url == "searchterm"
True if req.url is EXACTLY searchterm
Matching at the beginning or end of a string
req.http.host ~ "^www."
True if req.http.host starts with "www" followed by any single
character.
req.http.host ~ "^www\."
True if req.http.host starts with "www.". Notice that . was
escaped.
req.url ~ "\.jpg$"
True if req.url ends with ".jpg"
Multiple matches
req.url ~ "\.(jpg|jpeg|css|js)$"
True if req.url ends with either "jpg", "jpeg", "css" or "js".
Matching with wildcards
req.url ~ "jp.g$"
True if req.url ends with "jpeg", "jpag", "jp$g" and so on, but NOT
true if it ends with "jpg".
req.url ~ "jp.*g$"
True if req.url ends with "jpg", "jpeg", "jpeeeeeeeg",
"jpasfasf@@!!g" and so forth (jp followed by 0 or more random
characters ending with the letter 'g').
Conditional matches
req.url ~ "\.phg(\?.*)?$"
True if req.url ends with ".php" ".php?foo=bar" or ".php?", but not
".phpa". Meaning: Either it ends with just ".php" or ".php"
followed by a question mark any any number of characters.
req.url ~ "\.[abc]foo$"
True if req.url ends with either ".afoo" ".bfoo" or ".cfoo".
req.url ~ "\.[a-c]foo$"
Same as above.
Replacing content
set req.http.host = regsub(req.http.host, "^www\.","");
Replaces a leading "www." in the Host-header with a blank, if
present.
set req.http.x-dummy = regsub(req.http.host, "^www.","leading-3w.");
Sets the x-dummy header to contain the host-header, but replaces
a leading "www." with "leading-3w" example:
Host: www.example.com =>
Host: www.example.com
X-Dummy: leading-3w.example.com
Host: example.com =>
Host: example.com
X-Dummy: example.com
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment