diff --git a/lib/datasource/go/goproxy.spec.ts b/lib/datasource/go/goproxy.spec.ts
index 60cdf12c09b1a203187b4a0b893b4dea3951c1c9..fb5ddc6879d78eb334e3df017de21ce58ce94259 100644
--- a/lib/datasource/go/goproxy.spec.ts
+++ b/lib/datasource/go/goproxy.spec.ts
@@ -98,6 +98,7 @@ describe('datasource/go/goproxy', () => {
       expect(parseNoproxy('[abc]')?.source).toEqual('^(?:[abc])$');
       expect(parseNoproxy('[a-c]')?.source).toEqual('^(?:[a-c])$');
       expect(parseNoproxy('[\\a-\\c]')?.source).toEqual('^(?:[a-c])$');
+      expect(parseNoproxy('a.b.c')?.source).toEqual('^(?:a\\.b\\.c)$');
     });
 
     it('matches on real package prefixes', () => {
diff --git a/lib/datasource/go/goproxy.ts b/lib/datasource/go/goproxy.ts
index b6e6fb97adeee111578f07a5ab3e7f0e6ef43bc2..6eab2abde0f1c80b7387e58abaff011a601e33f7 100644
--- a/lib/datasource/go/goproxy.ts
+++ b/lib/datasource/go/goproxy.ts
@@ -79,7 +79,10 @@ const lexer = moo.states({
       push: 'characterRange',
       value: (_: string) => '[',
     },
-    char: /[^*?\\[\n]/, // TODO #12070
+    char: {
+      match: /[^*?\\[\n]/,
+      value: (s: string) => s.replace(regEx('\\.', 'g'), '\\.'),
+    },
     escapedChar: {
       match: /\\./, // TODO #12070
       value: (s: string) => s.slice(1),