diff --git a/lib/manager/gradle-wrapper/__fixtures__/gradle-wrapper-3.properties b/lib/manager/gradle-wrapper/__fixtures__/gradle-wrapper-3.properties
new file mode 100644
index 0000000000000000000000000000000000000000..a78c7b6f53f70510ff92aee962643faed7d9deb7
--- /dev/null
+++ b/lib/manager/gradle-wrapper/__fixtures__/gradle-wrapper-3.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-milestone-1-bin.zip
diff --git a/lib/manager/gradle-wrapper/__fixtures__/gradle-wrapper-4.properties b/lib/manager/gradle-wrapper/__fixtures__/gradle-wrapper-4.properties
new file mode 100644
index 0000000000000000000000000000000000000000..d98eba7fbb009ef80e1f4976d92553a742e64a65
--- /dev/null
+++ b/lib/manager/gradle-wrapper/__fixtures__/gradle-wrapper-4.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-7-rc-1-bin.zip
diff --git a/lib/manager/gradle-wrapper/__snapshots__/extract.spec.ts.snap b/lib/manager/gradle-wrapper/__snapshots__/extract.spec.ts.snap
index 979ae7197a8f743e0b153537f38a45a10b3dc46e..b0488517032ba8b6efcf54be388cbb5907728874 100644
--- a/lib/manager/gradle-wrapper/__snapshots__/extract.spec.ts.snap
+++ b/lib/manager/gradle-wrapper/__snapshots__/extract.spec.ts.snap
@@ -1,6 +1,6 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
-exports[`lib/manager/gradle-wrapper/extract extractPackageFile() extracts all version line 1`] = `
+exports[`manager/gradle-wrapper/extract extractPackageFile() extracts all version line 1`] = `
 Array [
   Object {
     "currentValue": "4.10.3",
@@ -11,7 +11,7 @@ Array [
 ]
 `;
 
-exports[`lib/manager/gradle-wrapper/extract extractPackageFile() extracts bin version line 1`] = `
+exports[`manager/gradle-wrapper/extract extractPackageFile() extracts bin version line 1`] = `
 Array [
   Object {
     "currentValue": "4.8",
@@ -22,7 +22,18 @@ Array [
 ]
 `;
 
-exports[`lib/manager/gradle-wrapper/extract extractPackageFile() handles whitespace 1`] = `
+exports[`manager/gradle-wrapper/extract extractPackageFile() extracts prerelease version line 1`] = `
+Array [
+  Object {
+    "currentValue": "7.0-milestone-1",
+    "datasource": "gradle-version",
+    "depName": "gradle",
+    "versioning": "gradle",
+  },
+]
+`;
+
+exports[`manager/gradle-wrapper/extract extractPackageFile() handles whitespace 1`] = `
 Array [
   Object {
     "currentValue": "4.10.3",
diff --git a/lib/manager/gradle-wrapper/extract.spec.ts b/lib/manager/gradle-wrapper/extract.spec.ts
index e6ec09b1e61e363da604e987da6bc8781a11c11b..b3d3a149d131c74b870627d7f05d493ad19cee32 100644
--- a/lib/manager/gradle-wrapper/extract.spec.ts
+++ b/lib/manager/gradle-wrapper/extract.spec.ts
@@ -1,5 +1,6 @@
 import { readFileSync } from 'fs';
 import { resolve } from 'upath';
+import { getName } from '../../../test/util';
 import { extractPackageFile } from './extract';
 
 const propertiesFile1 = readFileSync(
@@ -10,12 +11,20 @@ const propertiesFile2 = readFileSync(
   resolve(__dirname, './__fixtures__/gradle-wrapper-2.properties'),
   'utf8'
 );
+const propertiesFile3 = readFileSync(
+  resolve(__dirname, './__fixtures__/gradle-wrapper-3.properties'),
+  'utf8'
+);
+const propertiesFile4 = readFileSync(
+  resolve(__dirname, './__fixtures__/gradle-wrapper-4.properties'),
+  'utf8'
+);
 const whitespacePropertiesFile = readFileSync(
   resolve(__dirname, './__fixtures__/gradle-wrapper-whitespace.properties'),
   'utf8'
 );
 
-describe('lib/manager/gradle-wrapper/extract', () => {
+describe(getName(__filename), () => {
   describe('extractPackageFile()', () => {
     it('returns null for empty', () => {
       expect(extractPackageFile('nothing here')).toBeNull();
@@ -30,6 +39,18 @@ describe('lib/manager/gradle-wrapper/extract', () => {
       const res = extractPackageFile(propertiesFile2);
       expect(res.deps).toMatchSnapshot();
     });
+
+    it('extracts prerelease version line', () => {
+      const res = extractPackageFile(propertiesFile3);
+      expect(res.deps).toMatchSnapshot();
+      expect(res.deps[0].currentValue).toBe('7.0-milestone-1');
+    });
+
+    it('ignores invalid', () => {
+      const res = extractPackageFile(propertiesFile4);
+      expect(res).toBeNull();
+    });
+
     it('handles whitespace', () => {
       const res = extractPackageFile(whitespacePropertiesFile);
       expect(res.deps).toMatchSnapshot();
diff --git a/lib/manager/gradle-wrapper/extract.ts b/lib/manager/gradle-wrapper/extract.ts
index 426ea5b89a010a87f3b8e37b8339780327b59e98..6aedb9b0ae6c3d38d65c0398073d6a8631c37e7b 100644
--- a/lib/manager/gradle-wrapper/extract.ts
+++ b/lib/manager/gradle-wrapper/extract.ts
@@ -1,9 +1,13 @@
 import * as datasourceGradleVersion from '../../datasource/gradle-version';
 import { logger } from '../../logger';
+import { regEx } from '../../util/regex';
 import * as gradleVersioning from '../../versioning/gradle';
 import type { PackageDependency, PackageFile } from '../types';
 
-const DISTRIBUTION_URL_REGEX = /^(?<assignment>distributionUrl\s*=\s*)\S*-(?<version>(\d|\.)+)-(?<type>bin|all)\.zip\s*$/;
+// https://regex101.com/r/1GaQ2X/1
+const DISTRIBUTION_URL_REGEX = regEx(
+  '^(?:distributionUrl\\s*=\\s*)\\S*-(?<version>\\d+\\.\\d+(?:\\.\\d+)?(?:-\\w+)*)-(?<type>bin|all)\\.zip\\s*$'
+);
 
 export function extractPackageFile(fileContent: string): PackageFile | null {
   logger.debug('gradle-wrapper.extractPackageFile()');