通过正则表达式的进行输入限制的TextWatcher

1 通过handler来修改edittext 的只

public static class MileTextWatcher implements TextWatcher {
        public EditText editText;
        public Handler handler = new Handler(Looper.getMainLooper()) {
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                switch (MILE_DISABLE) {
                    case MILE_DISABLE:
                        String args = (String) msg.obj;
                        editText.setText(args.substring(0, args.length() - 1));
                        editText.setSelection(args.length() - 1);
                        break;
                }
            }
        };
        ;

        public MileTextWatcher(EditText editText) {
            this.editText = editText;
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if (TextUtils.isEmpty(s.toString()) || s.toString().equals("0")) {
                return;
            }
            if (s.charAt(0) == ‘.‘) {
                editText.setText("0.");
                editText.setSelection(2);
                return;
            }
            String reg = "^([1][0]{0,2}?)|^([1-9][0]{0,1}?)|^([1-9]{1,2}?)";
            if (!s.toString().contains(".") && !Pattern.compile(reg).matcher(s.toString()).matches()) {
                handler.obtainMessage(MILE_DISABLE, s.toString()).sendToTarget();
            }
            String reg2 = "^([0][.][0-9]{0,2}?)|^([1-9][0-9]{0,1}?)+([.][0-9]{0,2}?)";
            if (s.toString().contains(".") && !Pattern.compile(reg2).matcher(s.toString()).matches()) {
                handler.obtainMessage(MILE_DISABLE, s.toString()).sendToTarget();
            }
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    }

2 这个能实现输入0-99.99之间的数 并且输入错误能自动删除

时间: 2024-12-30 03:52:50

通过正则表达式的进行输入限制的TextWatcher的相关文章

js用正则表达式控制价格输入

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>用正则表达式控制价格输入</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type

正则表达式控制Input输入内容 ,js正则验证方法大全

https://blog.csdn.net/xushichang/article/details/4041507 正则表达式控制Input输入内容 2009年04月01日 17:15:00 阅读数:21747 不能输入中文 <input type="text" name="textfield"  onkeyup="this.value=this.value.replace(/[^/da-z_]/ig,'');"/>只能输入 数字和下划

【JavaScript】利用正则表达式检查输入框输入的是否为网址

这个功能在网页中也是很常见的,友情链接部分.表单填写个人主页的时候,使用JavaScript取验证是否为网址. 这个检验不好写,最好还是使用正则表达式去认证. 规定,输入的东西只能是http://与https://开头,而且必须是网址. 有人说,为何像www.1.com这样的网页不行呢? 这是以免你拿用户输入的东西构造超级链接的时候,a标签中的href属性如果遇不到http://或者https://的东西,那么就会认为是根目录,会在你的网站的网址后面接着写入这个地址再跳转,这个大家应该知道.比如

用正则表达式验证用户名输入的正确性

EditBox: 有效等价类 无效等价类 length:1--6 length<1orlength>6 char:a-z A-Z 0-9 other chars 图片如下: 代码采用javascript实现,代码: <html> <head> <script type="text/javascript"> function test(){ var name=document.getElementById('name').value; if

利用正则表达式限制网页表单里的文本框输入内容

将以下代码放入输入框就可以了. (1)用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))" (2)用正则表达式限制只能输入全角字符: onkeyup="valu

Java正则表达式Pattern和Matcher详解

java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. 1.简介:  java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. 它包括两个类:Pattern和Matcher . Pattern: 一个Pattern是一个正则表达式经编译后的表现模式. Matcher: 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查. 首先一个Pattern实例订制了一个所用语法与PERL的类

正则表达式大全(转)

常用正则表达式大全!(例如:匹配中文.匹配html) 匹配中文字符的正则表达式: [u4e00-u9fa5]    评注:匹配中文还真是个头疼的事,有了这个表达式就好办了  匹配双字节字符(包括汉字在内):[^x00-xff]  评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)  匹配空白行的正则表达式:ns*r  评注:可以用来删除空白行  匹配HTML标记的正则表达式:<(S*?)[^>]*>.*?|<.*? />  评注:网上流传的版本太糟糕

JAVA 正则表达式 (超详细)

(PS:这篇文章为转载,我不喜欢转载的但我觉得这篇文章实在是超赞了,就转了过来,这篇可以说是学习JAVA正则表达的必读篇.作者是个正真有功力的人,阅读愉快) 在Sun的JavaJDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包. 可粗略估计一下,除了偶尔用Linux的外,其他Linu x用户都会遇到正则表达式.正则表达式是个极端强大工具,而且在字符串模式-匹配和字符串模式-替换方面富有弹性.在Unix世界里,正则表达式几乎没有

PHP常用正则表达式

正则表达式 是一大利器,参数验证,数据采集等很多地方都用到. 许多程序设计语言都支持利用正则表达式进行字符串操作.平常写程序经常用到正则表达式,就整理一些常用的正则表达式分享一下! 平时写程序经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用: "^\d+$" //非负整数(正整数 + 0) "^[0-9][1-9][0-9]$" //正整数 "^((-\d+)|(0+))$" //非正整数(负整数 + 0) "^-[0-