防止EditText使用特殊字符

时间:2019-03-20 14:40:17

标签: android

我有一个需要用户输入的edittext,我有一个正则表达式以允许a-z A-Z 0-9 @ -_我想防止用户键入除此正则表达式之外的任何其他字符。现在,如果用户输入除此正则表达式之外的字符,则我的代码可以正常工作,edittext显示错误,但我希望该用户不能键入除此正则表达式以外的其他字符。

这是我检查正则表达式的代码。

editTextUsername.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void afterTextChanged(Editable s) {
            ims = imm.getCurrentInputMethodSubtype();

            String localeKeyboard = ims.getLocale();

            if(localeKeyboard.equalsIgnoreCase(LocaleManager.LANGUAGE_ARABIC)){
                editTextUsername.setError(null);
            }
            else{
                if(UtilHelper.isValidNameSubject(editTextUsername.getText().toString())){
                    editTextUsername.setError(null);
                }
                else{
                    editTextUsername.setError(getString(R.string.txt_invalid_name));
                }
            }
        }
    });

这是我的正则表达式,

"^[a-zA-Z0-9ء-ي@_ -]*$"

2 个答案:

答案 0 :(得分:0)

在您的xml中添加android:digits,将符号而不是abcd

<EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="text"
        android:digits="abcd" />

答案 1 :(得分:0)

您可以在{ ... computed:{ ...mapGetters({ queueProducts : 'queueProducts' }) } ... }

中尝试类似的操作
TextWatcher