How to use regular expression in Android

前端 未结 5 842
天命终不由人
天命终不由人 2020-12-03 21:07

I have a numberDecimal EditText which I want to validate using a regular expression. In validation what I want is:

  1. Before the decimal point, th

5条回答
  •  感情败类
    2020-12-03 21:20

    Maybe my implementation will help anyone:

        etRepeaterCallsign.addTextChangedListener(new TextWatcher() {
            private final Pattern sPattern
                    = Pattern.compile("^([A-Z]{0,2})?(\\d)?([A-Z-]{0,5})"); // ^([1-9][0-9]{0,2})?(\\.[0-9]?)?$
    
            private CharSequence mText;
    
            private boolean isValid(CharSequence s) {
                return sPattern.matcher(s).matches();
            }
    
            @Override
            public void beforeTextChanged(CharSequence r, int start, int count,
                                          int after) {
                mText = r.toString();
            }
    
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                bIsEdit = true;
            }
            @Override
            public void afterTextChanged(Editable s) {
                etRepeaterCallsign.removeTextChangedListener(this);
    
                int iCursorPosition = etRepeaterCallsign.getSelectionStart();
                etRepeaterCallsign.setText("");
                if (isValid(s))
                    etRepeaterCallsign.append(s);
                else
                    etRepeaterCallsign.append(mText);
    
                etRepeaterCallsign.setSelection(iCursorPosition);
    
                etRepeaterCallsign.addTextChangedListener(this);
    
            }
        });
    

提交回复
热议问题