diff --git a/core/modules/user/src/Plugin/Validation/Constraint/UserNameConstraintValidator.php b/core/modules/user/src/Plugin/Validation/Constraint/UserNameConstraintValidator.php
index 12d4fa3..0e9d98d 100644
--- a/core/modules/user/src/Plugin/Validation/Constraint/UserNameConstraintValidator.php
+++ b/core/modules/user/src/Plugin/Validation/Constraint/UserNameConstraintValidator.php
@@ -37,10 +37,12 @@ public function validate($items, Constraint $constraint) {
     if (preg_match('/[^\x{80}-\x{F7} a-z0-9@_.\'-]/i', $name)
       || preg_match(
         '/[\x{80}-\x{A0}' .       // Non-printable ISO-8859-1 + NBSP
-        '\x{AD}' .                // Soft-hyphen
+        '\x{A1}-\x{BF}' .         // Punctuation and math symbols
         '\x{2000}-\x{200F}' .     // Various space characters
         '\x{2028}-\x{202F}' .     // Bidirectional text overrides
         '\x{205F}-\x{206F}' .     // Various text hinting characters
+        '\x{27C0}-\x{27FF}' .     // More math symbols
+        '\x{3000}-\x{3020}' .     // Ideographic descriptions
         '\x{FEFF}' .              // Byte order mark
         '\x{FF01}-\x{FF60}' .     // Full-width latin
         '\x{FFF9}-\x{FFFD}' .     // Replacement characters
diff --git a/core/modules/user/src/Tests/UserValidationTest.php b/core/modules/user/src/Tests/UserValidationTest.php
index acc64b7..71adc73 100644
--- a/core/modules/user/src/Tests/UserValidationTest.php
+++ b/core/modules/user/src/Tests/UserValidationTest.php
@@ -54,12 +54,16 @@ function testUsernames() {
       'foo@bar'                => array('Valid username', 'assertNull'),
       'foo@example.com'        => array('Valid username', 'assertNull'),
       'foo@-example.com'       => array('Valid username', 'assertNull'), // invalid domains are allowed in usernames
-      'þòøÇßªř€'               => array('Valid username', 'assertNull'),
+      'þòøÇßæř€'               => array('Valid username', 'assertNull'),
       'ᚠᛇᚻ᛫ᛒᛦᚦ'                => array('Valid UTF8 username', 'assertNull'), // runes
+      'fooÀÆē'                 => array('Valid UTF8 username', 'assertNull'), // runes
       ' foo'                   => array('Invalid username that starts with a space', 'assertNotNull'),
       'foo '                   => array('Invalid username that ends with a space', 'assertNotNull'),
       'foo  bar'               => array('Invalid username that contains 2 spaces \'&nbsp;&nbsp;\'', 'assertNotNull'),
       ''                       => array('Invalid empty username', 'assertNotNull'),
+      'foo¡'                   => array('Invalid username containing invalid chars', 'assertNotNull'),
+      'foo©'                   => array('Invalid username containing invalid chars', 'assertNotNull'),
+      'foo¿'                   => array('Invalid username containing invalid chars', 'assertNotNull'),
       'foo/'                   => array('Invalid username containing invalid chars', 'assertNotNull'),
       'foo' . chr(0) . 'bar'   => array('Invalid username containing chr(0)', 'assertNotNull'), // NULL
       'foo' . chr(13) . 'bar'  => array('Invalid username containing chr(13)', 'assertNotNull'), // CR
