diff --git a/app/src/main/java/io/xxlabs/messenger/ui/intro/registration/username/UsernameRegistration.kt b/app/src/main/java/io/xxlabs/messenger/ui/intro/registration/username/UsernameRegistration.kt
index d029f00f2e1eca695c6397b2f6037a46ca4bc697..dfc7dd9b7db233ab16d44519e03a6850c7ed7c62 100644
--- a/app/src/main/java/io/xxlabs/messenger/ui/intro/registration/username/UsernameRegistration.kt
+++ b/app/src/main/java/io/xxlabs/messenger/ui/intro/registration/username/UsernameRegistration.kt
@@ -113,12 +113,12 @@ class UsernameRegistration @AssistedInject constructor(
 
     override val usernameFilters: Array<InputFilter> =
         arrayOf(
-            InputFilter { source, start, end, _, _, _ ->
-                val input = source?.subSequence(start, end)
-                val filtered = source?.subSequence(start, end)
-                    ?.replace(Regex(USERNAME_FILTER_REGEX), "")
-                if (filtered == input) null else filtered
-            },
+//            InputFilter { source, start, end, _, _, _ ->
+//                val input = source?.subSequence(start, end)
+//                val filtered = source?.subSequence(start, end)
+//                    ?.replace(Regex(USERNAME_FILTER_REGEX), "")
+//                if (filtered == input) null else filtered
+//            },
             InputFilter.LengthFilter(MAX_USERNAME_LENGTH)
         )
 
@@ -179,17 +179,23 @@ class UsernameRegistration @AssistedInject constructor(
         this.equals(PLAY_STORE_DEMO_USERNAME, true)
 
     private fun String?.isValidUsername(): Boolean {
-        if (isNullOrEmpty() || !isMinimumLength()) {
-            minimumLengthError()
-            return false
-        }
-
-        return if (this.matches(USERNAME_VALIDATION_REGEX.toRegex())) {
-            error.value = null
-            true
-        } else {
-            invalidUsernameError()
-            false
+       return when {
+            isNullOrEmpty() || !isMinimumLength() -> {
+                minimumLengthError()
+                false
+            }
+            matches(USERNAME_VALIDATION_REGEX.toRegex()) -> {
+                error.value = null
+                true
+            }
+            contains(Regex(USERNAME_FILTER_REGEX)) -> {
+                invalidCharsInUsernameError()
+                false
+            }
+            else -> {
+                invalidUsernameError()
+                false
+            }
         }
     }
 
@@ -203,6 +209,12 @@ class UsernameRegistration @AssistedInject constructor(
         error.value = application.getString(R.string.registration_error_username_invalid)
     }
 
+    private fun invalidCharsInUsernameError() {
+        error.postValue(
+            application.getString(R.string.registration_error_username_invalid_chars)
+        )
+    }
+
     private fun registerUsername(username: String, isDemoAcct: Boolean = false) {
         if (!loggedIn) {
             getOrCreateSession()
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 7a8bab9d42bf236571ab91bf2b88acadba3759e3..b5f46db385e447afb198cd44025800fe8afc63f9 100755
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -519,6 +519,7 @@
     <string name="label_edit">Edit</string>
     <string name="notification_group_request_text">Group request received</string>
     <string name="registration_error_username_invalid">Username must start and end with an alphanumeric character.</string>
+    <string name="registration_error_username_invalid_chars">Username contains invalid characters.</string>
     <string name="settings_confirm_delete_button">Confirm Delete</string>
     <string name="settings_delete_account_confirm_username_hint">Username</string>
     <string name="settings_account_recovery_dialog_title">Please note</string>