diff --git a/xurls.go b/xurls.go
index <HASH>..<HASH> 100644
--- a/xurls.go
+++ b/xurls.go
@@ -34,8 +34,8 @@ const (
 	webURL   = hostName + port + path
 	email    = `[a-zA-Z0-9._%\-+]+@` + hostName
 
-	strict  = `\b` + scheme + pathCont
-	relaxed = strict + `|` + webURL + `|` + email
+	strict  = `(\b` + scheme + pathCont + `)`
+	relaxed = `(` + strict + `|` + webURL + `|` + email + `)`
 )
 
 var (
@@ -53,7 +53,7 @@ func init() {
 // StrictMatchingScheme produces a regexp that matches urls like Strict but
 // whose scheme matches the given regular expression.
 func StrictMatchingScheme(exp string) (*regexp.Regexp, error) {
-	strictMatching := `\b(?i)(` + exp + `)(?-i)` + pathCont
+	strictMatching := `(\b(?i)(` + exp + `)(?-i)` + pathCont + `)`
 	re, err := regexp.Compile(strictMatching)
 	if err != nil {
 		return nil, err
Wrap exposed expressions in parenthesis

This means that they can be reused via Regexp.String() and added to other
regex expressions without breaking. If they are like `a|b|c`, then adding `d`
at the end wouldn't - `a|b|cd` - while `(a|b|c)d` does.