首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android EditText 輸入限制:僅允許字母、數字、底線、連字號

     編輯:程式設計綜合問答

方案一:XML digits 屬性(最簡單、零代碼)

<EditText
    android:inputType="text"
    android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-"
    android:hint="僅限字母、數字、底線、連字號" />

系統鍵盤會自動過濾,不合法字元無法輸入,無需任何 Java/Kotlin 代碼。

方案二:InputFilter 程式碼控制(需動態規則時)

InputFilter filter = (source, start, end, dest, dstart, dend) -> {
    for (int i = start; i < end; i++) {
        char c = source.charAt(i);
        if (!Character.isLetterOrDigit(c) && c != '_' && c != '-') {
            return ""; // 丟棄該字元
        }
    }
    return null; // 保留原字元
};
editText.setFilters(new InputFilter[]{filter});

注意:原始回答的邏輯有誤(|| 應為 &&),以上已修正。

方案三:TextWatcher 即時驗證並提示(不推薦用於阻擋輸入)

會導致游標跳動、輸入體驗差,僅適合事後驗證顯示錯誤訊息。

建議選擇

場景推薦方案
固定字元集、無複雜邏輯XML android:digits
規則需動態計算、或含 Unicode 字元InputFilter
需即時顯示錯誤提示TextWatcher + 紅色底線/Error
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved