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

    xiaoxiao2021-03-25  135

    这是第一次使用正则表达式来实现输入框限制输入类型,场景是项目中个人信息模块中的姓名字段只能要求输入这些类型,之前只是用其他的方式实现过其他类型的限制输入,这次想到这个方法边让同事帮忙写了个正则(对于正则我可真是心有余而力不足)希望能够帮到大家。。。好了不在这里扯牛宝宝了,还是直接上代码吧,对于做技术的而言还是代码来的最实在。。(说好的不扯呢,又扯这么多怪我咯)。

    首先上一个正则:

    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,}$(数字英文字母和中文汉字)

           好了,今天就先分享这么多了,希望可以帮助到大家。。。

    转载请注明原文地址: https://ju.6miu.com/read-20953.html

    最新回复(0)