2011-04-20 75 views

回答

1
boolean isValid=<EditText Variable>.getText().toString().matches("\\d{2}\\.\\d{2}"); 

将这个方法在onClickListener,我想你会好到哪里去。

+0

当我尝试这个正则表达式时,它不匹配它,因为它需要点而不管数字的位数。使用'\\。?'不够好,要么是因为它允许没有点的数字。看看我发布的替代正则表达式。我认为你的意思是'onKeyListener'。 – Aleadam 2011-04-21 01:44:29

+0

@Aleadam他试图验证输入后输入,所以我写onClick,这只是为了你想要一个像23.45这样的数字的情况下。表达方式 \\。意味着你正在使用文字。一个正常的。在正则表达式意味着匹配任何字符。 – chaitanya 2011-04-21 03:15:55

+0

我明白'\\。'表达式的含义。我只是比较'\\。'到'\\。?'(即强迫点存在与可选点)。如果您验证最终字符串,则可以使用表达式,但如果在输入时验证它,则不会。 – Aleadam 2011-04-21 04:27:33

7

试试看。我吸取正则表达式,所以它可能不是最好的,但试试看。

EditText text = new EditText(this); 
    InputFilter[] filters = new InputFilter[1]; 
    filters[0] = new InputFilter() { 
     public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { 
      if (end > start) { 
       String destTxt = dest.toString(); 
       String resultingTxt = destTxt.substring(0, dstart) + source.subSequence(start, end) + destTxt.substring(dend); 
       if (!resultingTxt.matches("^\\d(\\d(\\.\\d{0,2})?)?")) { 
        return ""; 
       } 
      } 
     return null; 
     } 
    }; 
    text.setFilters(filters); 
+1

嗨Aleadam非常感谢你分享你的知识... – praveenb 2011-04-21 18:21:58

相关问题