Android中EditText如何限制为手机号码

来源:互联网 发布:电视机网络机顶盒破解 编辑:程序博客网 时间:2024/05/02 02:06

今天在学习EditText突发奇想:如何确定输入框只能输入手机号码?经过分析,只需要限定为EditText输入的是11位数字就可以了

本文参考的地方:

Java正则表达式Pattern和Matcher类详解 - 小鱼儿的专栏 - 博客频道 - CSDN.NET

EditText设置输入的类型,只能输入纯数字,只能输入手机号码,只能输入邮箱等等。 - 程序猿小冰博客 - 博客频道 - CSDN.NET

控制EidtTex输入只能为11位数字(判断手机号码)-Android开发经验分享-eoe 移动开发者论坛 - Powered by Discuz!

规定只能是数字类型

方法一:在xml定义EditText属性的时候可以限制

    <!-- android:digits="0123456789"限制输入的只能是0123456789的数字-->    <!--android:inputType="phone|number"同样是限制输入的只能是0123456789的数字-->    <EditText        android:id="@+id/et_phone_number"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:cursorVisible="true"        android:inputType="phone|number"        android:hint="请输入电话号码"/>

缺点:以上的两个属性限制都是一样的效果,不能限定输入的数字不能超过11位数字

方法二:在找到EditText的组件之后进行限定

//找到我们需要的组件et_phone_number =(EditText)findViewById(R.id.et_phone_number);//et_phone_number在xml定义EditText属性的id        et_phone_number.setInputType(InputType.TYPE_CLASS_PHONE);//限定输入框只能输入手机号码类型的,即只能输入数字


判断是否为11位0-9的数字

    /**     * 判断手机格式是否正确     *      * @param str     *            需要判断的字符串     * @return 返回true说明字符串匹配成功     */    // Pattern类的作用在于编译正则表达式后创建一个匹配模式. Matcher类使用Pattern实例提供的模式信息对正则表达式进行匹配    private boolean isPhone(String str) {        // 将给定的正则表达式编译并赋予给Pattern类        Pattern pattern = Pattern.compile("1[0-9]{10}");        // 对指定输入的字符串创建一个Matcher对象        Matcher matcher = pattern.matcher(str);        // 尝试对整个目标字符展开匹配检测,也就是只有整个目标字符串完全匹配时才返回真值.        if (matcher.matches()) {            return true;        } else {            return false;        }    }
1 0
原创粉丝点击