diff --git a/core/misc/machine-name.js b/core/misc/machine-name.js
index bbad2e3..693a048 100644
--- a/core/misc/machine-name.js
+++ b/core/misc/machine-name.js
@@ -80,7 +80,8 @@
         timeout = setTimeout(function () {
           if (baseValue.toLowerCase() !== expected) {
             xhr = self.transliterate(baseValue, options).done(function (machine) {
-              self.showMachineName(machine.substr(0, options.maxlength), data);
+              machine = machine.replace(/^_+/, '').substr(0, options.maxlength).replace(/_+$/, '');
+              self.showMachineName(machine, data);
             });
           }
           else {
diff --git a/core/tests/Drupal/FunctionalJavascriptTests/Core/MachineNameTest.php b/core/tests/Drupal/FunctionalJavascriptTests/Core/MachineNameTest.php
index 23c2f0b..ddcffdf 100644
--- a/core/tests/Drupal/FunctionalJavascriptTests/Core/MachineNameTest.php
+++ b/core/tests/Drupal/FunctionalJavascriptTests/Core/MachineNameTest.php
@@ -46,9 +46,9 @@ public function testMachineName() {
     // Test values for conversion.
     $test_values = [
       [
-        'input' => 'Test value !0-9@',
+        'input' => '  	Test    value !0-9@  		',
         'message' => 'A title that should be transliterated must be equal to the php generated machine name',
-        'expected' => 'test_value_0_9_',
+        'expected' => 'test_value_0_9',
       ],
       [
         'input' => 'Test value',
