2013-05-17 3 views
1

는이 코드 안에 ...이 정규식생일 형식

^([0][1-9] | [1][0-2]) ([0])[1-9][1-2][\d] | [3][0-1]) ([\d]{2})$ 

를 사용할 수 있습니까? 내가하고 싶은 일은 다른 캐릭터 입력을 제한하는 동시에 원하는 생일 날짜 형식을 따르는 것입니다. MM/DD/YY.

InputFilter[] filters = new InputFilter[1]; 
filters[0] = new InputFilter(){ 
    @Override 
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { 
     if (end > start) { 

      char[] acceptedChars = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9','/'}; 

      for (int index = start; index < end; index++) {           
       if (!new String(acceptedChars).contains(String.valueOf(source.charAt(index)))) { 
        return ""; 
       }    
      } 
     } 
     return null; 
    } 

}; 
txtBirthday.setFilters(filters); 

내가 사용자 입력을 restict을 모두 사용하여 시도, 나는 특수 문자를 입력 할 때마다 글고 이미 동의하지 않습니다 (선한)하지만 난 입력하면이이 유효하고해야 07/27/92 말할 수 있습니다 받아 들여질 수 있지만 프로그램은 여전히 ​​유효하지 않다고 말합니다. 여기에 내 코드 어쩌면 내 정규식에 뭔가 문제가있다

String valid_bday = "^([0][0-9]|[1][0-2][\b])([0][1-9][1-2]|[3][0-1])([\b]{2})$"; 
Matcher validbday = Pattern.compile(valid_bday).matcher(Birthday); 
//on my else if 
else if(!validbday.matches()) 
{ 
    Toast.makeText(getApplicationContext(), "Birth date entered is invalid. \n (MM/DD/YY)", Toast.LENGTH_LONG).show(); 
} 

.... MM/DD/YY 형식으로하고 싶습니다. 감사!

+0

날짜 선택기 위젯을 사용하십시오. http://stackoverflow.com/questions/3299392/date-picker-in-android – Calvin

+0

Ahhhhh 님이 질문을 업데이트했습니다. 정상적으로 다른 질문을해야합니다. 그런데 editext가 currect 입력을 제공한다면 왜 여기서 유효성 검사를 사용합니까? –

+0

editText는 입력 할 특수 문자 만 트랩합니다. 트랩 할 정규 표현식을 따르지 않습니다. 13/32/13, 13 일은 inavalid입니다. coz 우리는 12 일을 마치 32 일과 같이 사용할 수 있습니다. 31, 그 이유는 내가 datepicker를 사용하지 않는 경우에도 올바른 날짜를 받아 들일 정규식을 사용합니다. (0) [0] [0-9] | [1] [0-2] [\ b]) ([0] [1-9] [1-2] | [3] [0-1]) ([\ b] {2}) $ "; – dolphinately

답변

3

정규식 유효성 검사를 사용하지 않아도됩니다.

Android는 이미 android:inputType="date"을 사용하여 날짜 입력을 할 수있는 방법을 제공합니다.

그래서 칼빈은 당신이 사용할 수있는 말했듯이


<EditText 
    android:id="@+id/editText1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:ems="10" 
    android:inputType="date" > 
그리고이 네 DatePicker에서 (더 나은 방법입니다) .. 당신 글고 치기에이 속성을 추가하고 즐길 수 있습니다. Date picker in Android은 아주 좋은 예입니다.


mm/DD/YYYY 날짜 패턴이 작동합니다

(0?[1-9]|1[012])/(0?[1-9]|[12][0-9]|3[01])/((19|20)\\d\\d)

를 사용해야합니다. 그러나 이것이 당신의 최종 해결책이 아니라는 것을 기억하십시오. 31 일 또는 30 일이없는 달에 대한 유효성 검증을 구현해야합니다. Look here for better understanding.