본문 바로가기

Programming/Android

[Android] 정규식으로 형식 필터(이모티콘, 이메일)

[Android] EditText Filter

주로 EditText에서 사용되는 필터

Emoji Filter(이모티콘 필터)

123456789101112131415161718192021private EditText editText ;

public void onCreate(Bundle savedInstanceState) {
    ...
    editText.setFilters(new InputFilter[]{specialCharacterFilter});
}

/** 이모티콘이 있을경우 "" 리턴, 그렇지 않을 경우 null 리턴 **/
private InputFilter specialCharacterFilter = new InputFilter() {
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
        for (int i = start; i < end; i++) {
           // 이모티콘 패턴
            Pattern unicodeOutliers = Pattern.compile("[\\uD83C-\\uDBFF\\uDC00-\\uDFFF]+");
            // '-' 입력 받고 싶을 경우 : unicodeOutliers.matcher(source).matches() && !source.toString().matches(".*-.*")            
            if(unicodeOutliers.matcher(source).matches()) {
                return "";
            }
        }
        return null;
    }
};

Email Filter(이메일 필터)

123456789/** 
  *   [email 형식 체크 함수]
  *   true : 이메일 형식에 맞음
  *   false : 이메일 형식에 맞지 않음 
**/
public boolean checkEmailForm(String src){
    String emailRegex = "^[_a-z0-9-]+(.[_a-z0-9-]+)*@(?:\\w+\\.)+\\w+$";
    return Pattern.matches(emailRegex, src);
}