Android编辑文本必须包含两个字母和三个数字

时间:2016-02-23 13:47:48

标签: java android

我试图限制哪些信息可以输入到edittext字段中。我希望编辑文本只有两个字母,后跟三个数字,例如:CM066。我尝试过使用:

InputFilter myFilter = new InputFilter() { 
        public CharSequence filter(CharSequence source, int start, int end, 
Spanned dest, int dstart, int dend) { 
                for (int i = start; i < end; i++) { 


                        if (!Character.isLetter(source.charAt(i))) { 
                                return ""; 
                        } 

                        if (i == start) {
                           return source.toUpperCase();
                        }

                } 
                return source; 
        } 
}; 

edit.setFilters(new InputFilter[]{myFilter}); 

但是我认为这只允许其中一个。有没有办法做到这一点?或者将这些作为两个编辑文本并在XML中设置输入类型会更容易吗?谢谢!

2 个答案:

答案 0 :(得分:0)

解决:

private void codeFilter()
    {
        codeInput.setFilters(new InputFilter[]
                {
                new InputFilter.LengthFilter(5)
                {
                    public CharSequence filter(CharSequence src, int start,
                                               int end, Spanned dst, int dstart, int dend)
                    {
                        if (src.toString().matches("[A-Z]+[A-Z]+[0-9]+[0-9]+[0-9]"))
                        {
                            return src;
                        }
                        return "";
                    }
                }
        });
    }

答案 1 :(得分:0)

您可以使用正则表达式进行此类检查。对于您只想允许两个字母的情况,那么三位正则表达式是

^[A-Z]{2}[0-9]{3}$

如果您只允许使用上限字母,那么它应该是

Pattern p = Pattern.compile("^[A-Z]{2}[0-9]{3}$");
Matcher m = p.matcher("CM006");
if(m.matches())
{
 //do what you want to do
}
else
{
 //do if they dont match
 }

您可以像下面那样使用它

{{1}}

如果你想了解更多关于android中的正则表达式和模式

http://developer.android.com/reference/java/util/regex/Pattern.html