diff --git a/osbase/oci/registry/client.go b/osbase/oci/registry/client.go
index c414108..4e60b7b 100644
--- a/osbase/oci/registry/client.go
+++ b/osbase/oci/registry/client.go
@@ -38,9 +38,9 @@
 )
 
 var (
-	repositoryRegexp = regexp.MustCompile(`^` + repositoryExpr + `$`)
-	tagRegexp        = regexp.MustCompile(`^` + tagExpr + `$`)
-	digestRegexp     = regexp.MustCompile(`^` + digestExpr + `$`)
+	RepositoryRegexp = regexp.MustCompile(`^` + repositoryExpr + `$`)
+	TagRegexp        = regexp.MustCompile(`^` + tagExpr + `$`)
+	DigestRegexp     = regexp.MustCompile(`^` + digestExpr + `$`)
 )
 
 // Client is an OCI registry client.
@@ -81,10 +81,10 @@
 // advantage of fetching by tag is that it allows a pull through cache to
 // display tags to a user inspecting the cache contents.
 func (c *Client) Read(ctx context.Context, tag, digest string) (*oci.Image, error) {
-	if !repositoryRegexp.MatchString(c.Repository) {
+	if !RepositoryRegexp.MatchString(c.Repository) {
 		return nil, fmt.Errorf("invalid repository %q", c.Repository)
 	}
-	if tag != "" && !tagRegexp.MatchString(tag) {
+	if tag != "" && !TagRegexp.MatchString(tag) {
 		return nil, fmt.Errorf("invalid tag %q", tag)
 	}
 	if digest != "" {
@@ -137,7 +137,7 @@
 }
 
 func (r *clientBlobs) Blob(descriptor *ocispecv1.Descriptor) (io.ReadCloser, error) {
-	if !digestRegexp.MatchString(string(descriptor.Digest)) {
+	if !DigestRegexp.MatchString(string(descriptor.Digest)) {
 		return nil, fmt.Errorf("invalid blob digest %q", descriptor.Digest)
 	}
 	blobPath := fmt.Sprintf("/v2/%s/blobs/%s", r.client.Repository, descriptor.Digest)
diff --git a/osbase/oci/registry/server.go b/osbase/oci/registry/server.go
index 13a9dc2..9c99c40 100644
--- a/osbase/oci/registry/server.go
+++ b/osbase/oci/registry/server.go
@@ -53,10 +53,10 @@
 //
 // If the tag is empty, the image can only be fetched by digest.
 func (s *Server) AddImage(repository string, tag string, image *oci.Image) error {
-	if !repositoryRegexp.MatchString(repository) {
+	if !RepositoryRegexp.MatchString(repository) {
 		return fmt.Errorf("invalid repository %q", repository)
 	}
-	if tag != "" && !tagRegexp.MatchString(tag) {
+	if tag != "" && !TagRegexp.MatchString(tag) {
 		return fmt.Errorf("invalid tag %q", tag)
 	}
 
