diff --git a/staging/src/k8s.io/legacy-cloud-providers/gce/gce_zones.go b/staging/src/k8s.io/legacy-cloud-providers/gce/gce_zones.go
index <HASH>..<HASH> 100644
--- a/staging/src/k8s.io/legacy-cloud-providers/gce/gce_zones.go
+++ b/staging/src/k8s.io/legacy-cloud-providers/gce/gce_zones.go
@@ -20,6 +20,7 @@ package gce
 
 import (
 	"context"
+	"fmt"
 	"strings"
 
 	compute "google.golang.org/api/compute/v1"
@@ -79,7 +80,9 @@ func (g *Cloud) ListZonesInRegion(region string) ([]*compute.Zone, error) {
 	defer cancel()
 
 	mc := newZonesMetricContext("list", region)
-	list, err := g.c.Zones().List(ctx, filter.Regexp("region", g.getRegionLink(region)))
+	// Use regex match instead of an exact regional link constructed from getRegionalLink below.
+	// See comments in issue kubernetes/kubernetes#87905
+	list, err := g.c.Zones().List(ctx, filter.Regexp("region", fmt.Sprintf(".*/regions/%s", region)))
 	if err != nil {
 		return nil, mc.Observe(err)
 	}
Fix ListZonesInRegion() after client BasePath change

This path fixes region Regex for listing zones.
Compute client BasePath changed to compute.googleapis.com, but resource URI were left as www.googleapis.com