diff --git a/core/lib/Drupal/Core/Extension/ModuleHandler.php b/core/lib/Drupal/Core/Extension/ModuleHandler.php
index 05f1e4f..81c768f 100644
--- a/core/lib/Drupal/Core/Extension/ModuleHandler.php
+++ b/core/lib/Drupal/Core/Extension/ModuleHandler.php
@@ -676,7 +676,7 @@ public static function parseDependency($dependency) {
     $p_core = '(?:' . preg_quote(\Drupal::CORE_COMPATIBILITY) . '-)?';
     $p_major = '(?<major>\d+)';
     // By setting the minor version to x, branches can be matched.
-    $p_minor = '(?<minor>(?:\d+|x)(?:-[A-Za-z]+\d+)?)';
+    $p_minor = '(?<minor>(?:\d+|x)(?:-([A-Za-z]+\d+|unstable))?)';
     $parts = explode('(', $dependency, 2);
     $value['name'] = trim($parts[0]);
     if (isset($parts[1])) {
diff --git a/core/modules/big_pipe/big_pipe.info.yml b/core/modules/big_pipe/big_pipe.info.yml
index 0108e1f..73528f2 100644
--- a/core/modules/big_pipe/big_pipe.info.yml
+++ b/core/modules/big_pipe/big_pipe.info.yml
@@ -2,5 +2,5 @@ name: BigPipe
 type: module
 description: 'Sends pages in a way that allows browsers to show them much faster. Uses the BigPipe technique.'
 package: Core (Experimental)
-version: VERSION
+version: 8.x-0.x-alpha1
 core: 8.x
diff --git a/core/modules/inline_form_errors/inline_form_errors.info.yml b/core/modules/inline_form_errors/inline_form_errors.info.yml
index a5949fa..d9ef1bd 100644
--- a/core/modules/inline_form_errors/inline_form_errors.info.yml
+++ b/core/modules/inline_form_errors/inline_form_errors.info.yml
@@ -1,6 +1,6 @@
 type: module
 name: Inline Form Errors
 description: 'Enables inline form errors.'
-version: VERSION
+version: 8.x-0.x-alpha1
 core: 8.x
 package: Core (Experimental)
diff --git a/core/modules/migrate/migrate.info.yml b/core/modules/migrate/migrate.info.yml
index 51bd5b0..55a93ab 100644
--- a/core/modules/migrate/migrate.info.yml
+++ b/core/modules/migrate/migrate.info.yml
@@ -2,5 +2,5 @@ name: Migrate
 type: module
 description: 'Handles migrations'
 package: Core (Experimental)
-version: VERSION
+version: 8.x-0.x-alpha1
 core: 8.x
diff --git a/core/modules/migrate_drupal/migrate_drupal.info.yml b/core/modules/migrate_drupal/migrate_drupal.info.yml
index f2e7272..e2dc84b 100644
--- a/core/modules/migrate_drupal/migrate_drupal.info.yml
+++ b/core/modules/migrate_drupal/migrate_drupal.info.yml
@@ -2,7 +2,7 @@ name: Migrate Drupal
 type: module
 description: 'Contains migrations from older Drupal versions.'
 package: Core (Experimental)
-version: VERSION
+version: 8.x-0.x-alpha1
 core: 8.x
 dependencies:
   - migrate
diff --git a/core/modules/system/tests/modules/experimental_module_test/experimental_module_test.info.yml b/core/modules/system/tests/modules/experimental_module_test/experimental_module_test.info.yml
index 6cf19cd..3f8687e 100644
--- a/core/modules/system/tests/modules/experimental_module_test/experimental_module_test.info.yml
+++ b/core/modules/system/tests/modules/experimental_module_test/experimental_module_test.info.yml
@@ -2,5 +2,5 @@ name: 'Experimental Test'
 type: module
 description: 'Module in the experimental package to test experimental functionality.'
 package: Core (Experimental)
-version: 8.y.x-unstable
+version: 8.x-0.x-unstable
 core: 8.x
diff --git a/core/tests/Drupal/KernelTests/Core/Common/DrupalCheckIncompatibilityTest.php b/core/tests/Drupal/KernelTests/Core/Common/DrupalCheckIncompatibilityTest.php
new file mode 100644
index 0000000..def9c86
--- /dev/null
+++ b/core/tests/Drupal/KernelTests/Core/Common/DrupalCheckIncompatibilityTest.php
@@ -0,0 +1,60 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\KernelTests\Core\Common\DrupalCheckIncompatibilityTest.
+ */
+
+namespace Drupal\KernelTests\Core\Common;
+
+use Drupal\Core\Extension\ModuleHandler;
+use Drupal\KernelTests\KernelTestBase;
+
+/**
+ * @covers ::drupal_check_incompatibility
+ * @group Common
+ */
+class DrupalCheckIncompatibilityTest extends KernelTestBase {
+
+  /**
+   * The basic functionality of drupal_check_incompatibility().
+   *
+   * @dataProvider DrupalCheckIncompatibilityProvider
+   */
+  public function testDrupalCheckIncompatibility($dependency, $module_version, $expected) {
+    $dependency = ModuleHandler::parseDependency($dependency);
+    // If the module version starts with 8.x- is it stripped prior to using
+    // drupal_check_incompatibility(). Usual the 8.x part is obtained from
+    // \Drupal::CORE_COMPATIBILITY but we are not testing that here so it is
+    // hard coded.
+    // @see system_requirements()
+    // @see \Drupal\system\Form\ModulesListForm::buildRow()
+    $core_compatibility = '8.x';
+    $module_version = str_replace($core_compatibility . '-', '', $module_version);
+    $this->assertSame($expected, drupal_check_incompatibility($dependency, $module_version));
+  }
+
+  /**
+   * Data provider for self::testDrupalCheckIncompatibility().
+   */
+  public function DrupalCheckIncompatibilityProvider() {
+    // A NULL expected return value indicates that the dependency has been met
+    // and module is compatible.
+    return [
+      ['drupal_migrate_ui(>=8.x-0.x-alpha1)', '8.x-0.x-alpha1', NULL],
+      ['drupal_migrate_ui(<8.x-0.x-alpha1)', '8.x-0.x-alpha1', ' (<8.x-0.x-alpha1)'],
+      ['drupal_migrate_ui(>8.x-0.x-alpha1)', '8.x-0.x-alpha2', NULL],
+      ['drupal_migrate_ui(>8.x-0.x-alpha2)', '8.x-0.x-beta1', NULL],
+      ['drupal_migrate_ui(>=8.1.x)', '8.x-0.x-beta1', ' (>=8.1.x)'],
+      // Check that dependencies still work after an experimental module has
+      // become part of core and therefore gets core's version number.
+      ['drupal_migrate_ui(>8.x-0.x-alpha1)', '8.1.x-dev', NULL],
+      ['drupal_migrate_ui(<8.x-0.x-alpha1)', '8.1.x-dev', ' (<8.x-0.x-alpha1)'],
+      // A very odd test to show how fragile the current dependency checking is.
+      // This will pass but in reality this will never happen because a module's
+      // core dependency would be checked before this.
+      ['drupal_migrate_ui(>8.x-0.x-alpha1)', '3.1.x-dev', NULL],
+    ];
+  }
+
+}
diff --git a/core/tests/Drupal/Tests/Core/Extension/ModuleHandlerTest.php b/core/tests/Drupal/Tests/Core/Extension/ModuleHandlerTest.php
index c7dd97f..83107d7 100644
--- a/core/tests/Drupal/Tests/Core/Extension/ModuleHandlerTest.php
+++ b/core/tests/Drupal/Tests/Core/Extension/ModuleHandlerTest.php
@@ -505,6 +505,13 @@ public function dependencyProvider() {
       array('views_ui( <=8.x-1.x)', array('name' => 'views_ui', 'original_version' => ' ( <=8.x-1.x)', 'versions' => array(array('op' => '<=', 'version' => '2.x')))),
       array('views_ui(>8.x-1.x)', array('name' => 'views_ui', 'original_version' => ' (>8.x-1.x)', 'versions' => array(array('op' => '>', 'version' => '2.x')))),
       array('drupal:views_ui(>8.x-1.x)', array('project' => 'drupal', 'name' => 'views_ui', 'original_version' => ' (>8.x-1.x)', 'versions' => array(array('op' => '>', 'version' => '2.x')))),
+      // Experimental core modules.
+      array('drupal_migrate_ui(>8.x-0.x-alpha1)', array('name' => 'drupal_migrate_ui', 'original_version' => ' (>8.x-0.x-alpha1)', 'versions' => array(array('op' => '>', 'version' => '0.x-alpha1')))),
+      array('drupal_migrate_ui(<=8.x-0.x-alpha1)', array('name' => 'drupal_migrate_ui', 'original_version' => ' (<=8.x-0.x-alpha1)', 'versions' => array(array('op' => '<=', 'version' => '0.x-alpha1')))),
+      array('drupal_migrate_ui(8.x-0.x-alpha1)', array('name' => 'drupal_migrate_ui', 'original_version' => ' (8.x-0.x-alpha1)', 'versions' => array(array('op' => '=', 'version' => '0.x-alpha1')))),
+      array('drupal_migrate_ui(>8.x-0.x)', array('name' => 'drupal_migrate_ui', 'original_version' => ' (>8.x-0.x)', 'versions' => array(array('op' => '>', 'version' => '1.x')))),
+      array('drupal_migrate_ui(<=8.x-0.x)', array('name' => 'drupal_migrate_ui', 'original_version' => ' (<=8.x-0.x)', 'versions' => array(array('op' => '<=', 'version' => '1.x')))),
+      array('drupal_migrate_ui(>8.x-0.x-unstable)', array('name' => 'drupal_migrate_ui', 'original_version' => ' (>8.x-0.x-unstable)', 'versions' => array(array('op' => '>', 'version' => '0.x-unstable')))),
     );
   }
 
