您的位置:首页 > 其它

EditText限制只能输入汉字字母和空格

2017-03-10 14:33 1431 查看
这是第一次使用正则表达式来实现输入框限制输入类型,场景是项目中个人信息模块中的姓名字段只能要求输入这些类型,之前只是用其他的方式实现过其他类型的限制输入,这次想到这个方法边让同事帮忙写了个正则(对于正则我可真是心有余而力不足

)希望能够帮到大家。。。好了不在这里扯牛宝宝了,还是直接上代码吧,对于做技术的而言还是代码来的最实在。。(说好的不扯呢,又扯这么多怪我咯

)。

首先上一个正则:

public static String stringFilter(String str) throws PatternSyntaxException {

        // 只允许字母、和空格和汉字

        String regEx = "[a-zA-Z\\u4E00-\\u9FA5 ]+";

        return str != null ? (str.matches(regEx) ? str : "") : "";

    }

然后实现EditText的addTextChangedListener,并且在onTextChanged调用改正则表达式

nameEt.addTextChangedListener(new TextWatcher() {

            String str;

            @Override

            public void onTextChanged(CharSequence s, int start, int before,

                    int count) {

               // String str = stringFilter(nameEt.getText().toString());

                //System.out.println("输入框改变的值是:===" + str.toString());

                // if (nameEt.getText().equals(str)) {

                // nameEt.setText(str);

                //nameEt.setSelection(str.length());

                //  }

                //  注意这里一定是这种形式,上边注释掉的这种形式好像没有作用哎(至于为什么我也不太清楚)

                String strs=nameEt.getText().toString();

                str = stringFilter(strs.toString());

             

                if (!strs.equals(str)) {

                    nameEt.setText(str);

                    nameEt.setSelection(str.length());

                }

            }

            @Override

            public void beforeTextChanged(CharSequence s, int start, int count,

                    int after) {

            }

            @Override

            public void afterTextChanged(Editable s) {

                

            }

        });

另外一个正则表达式:^[\u4E00-\u9FA50-9a-zA-Z_-]{0,}$(数字英文字母和中文汉字)

       好了,今天就先分享这么多了,希望可以帮助到大家。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: