diff --git a/lib/modules/manager/terraform/__fixtures__/providers.tf b/lib/modules/manager/terraform/__fixtures__/providers.tf
index 3d1071f916e8c3b9d139c22abc9b42ca9aacc96c..8575726e9016c85f9b7a8037ddaff4a3953e39d9 100644
--- a/lib/modules/manager/terraform/__fixtures__/providers.tf
+++ b/lib/modules/manager/terraform/__fixtures__/providers.tf
@@ -69,6 +69,10 @@ terraform {
       source  = "terraform.example.com/hashicorp/kubernetes"
       version = ">= 1.0"
     }
+    oci = {
+      source  = "terraform-company_special.example.com/oracle/oci"
+      version = ">= 4.0"
+    }
   }
   required_version = ">= 0.13"
 }
diff --git a/lib/modules/manager/terraform/__snapshots__/extract.spec.ts.snap b/lib/modules/manager/terraform/__snapshots__/extract.spec.ts.snap
index 66212bfc2e4964748e827ffbfe1ad0a3b2e2c958..9b69b849193c8cedaab854579d70275a1a1ba9f0 100644
--- a/lib/modules/manager/terraform/__snapshots__/extract.spec.ts.snap
+++ b/lib/modules/manager/terraform/__snapshots__/extract.spec.ts.snap
@@ -388,7 +388,7 @@ exports[`modules/manager/terraform/extract extractPackageFile() extracts provide
       "depName": "hashicorp/terraform",
       "depType": "required_version",
       "extractVersion": "v(?<version>.*)$",
-      "lineNumber": 72,
+      "lineNumber": 76,
     },
     {
       "currentValue": "2.7.2",
@@ -443,6 +443,17 @@ exports[`modules/manager/terraform/extract extractPackageFile() extracts provide
         "https://terraform.example.com",
       ],
     },
+    {
+      "currentValue": ">= 4.0",
+      "datasource": "terraform-provider",
+      "depName": "oci",
+      "depType": "required_provider",
+      "lockedVersion": undefined,
+      "packageName": "oracle/oci",
+      "registryUrls": [
+        "https://terraform-company_special.example.com",
+      ],
+    },
   ],
 }
 `;
diff --git a/lib/modules/manager/terraform/extract.spec.ts b/lib/modules/manager/terraform/extract.spec.ts
index 48bbcb6cfbfc34f2b9005617c4e644f1e94fedef..f048345e846791907a034a043af95ab975b1f2ce 100644
--- a/lib/modules/manager/terraform/extract.spec.ts
+++ b/lib/modules/manager/terraform/extract.spec.ts
@@ -91,7 +91,7 @@ describe('modules/manager/terraform/extract', () => {
 
     it('extracts providers', async () => {
       const res = await extractPackageFile(providers, 'providers.tf', {});
-      expect(res?.deps).toHaveLength(14);
+      expect(res?.deps).toHaveLength(15);
       expect(res?.deps.filter((dep) => dep.skipReason)).toHaveLength(2);
       expect(res).toMatchSnapshot();
     });
diff --git a/lib/modules/manager/terraform/providers.ts b/lib/modules/manager/terraform/providers.ts
index 4c20e6d0e6ead5e246aed617d9d1545f0d04c01b..10501357ff9d21a1b73435fe1937fcf97fef92f2 100644
--- a/lib/modules/manager/terraform/providers.ts
+++ b/lib/modules/manager/terraform/providers.ts
@@ -12,7 +12,7 @@ import {
 } from './util';
 
 export const sourceExtractionRegex = regEx(
-  /^(?:(?<hostname>(?:[a-zA-Z0-9]+\.+)+[a-zA-Z0-9]+)\/)?(?:(?<namespace>[^/]+)\/)?(?<type>[^/]+)/
+  /^(?:(?<hostname>(?:[a-zA-Z0-9-_]+\.+)+[a-zA-Z0-9-_]+)\/)?(?:(?<namespace>[^/]+)\/)?(?<type>[^/]+)/
 );
 
 export function extractTerraformProvider(