2013-08-22 3 views
0

EditText 값을 Regex을 사용하여 유효성을 검사해야합니다. 조건 :정규식 안드로이드에서 두 개 이상의 조건을 확인하려면

  1. 사용자가 부동 소수점 값을 입력 할 수 있습니다 부호없는 정수를
  2. 사용자를 입력 할 수 있습니다.

나는이 사용하는 두 개의 서로 다른 패턴을 달성하지만 정규식 확인하는 방법을 모두 하나의 에서 아무 생각이 없습니다.

는 당신이 안드로이드에있는 경우이와 예를 들어,은 내장 유효성 검사기를 사용할 수있는이 다음 정규식을

public boolean validFloatForString(String value) { 
     String decimalPattern = "([0-9]*)\\.([0-9]*)"; 
     String integerPattern = "([0-9]*)"; 
     boolean match = Pattern.matches(decimalPattern, value) 
       || Pattern.matches(integerPattern, value); 
     System.out.println(match); // if true then decimal else not 
     return match; 
    } 
+0

"regex"REG 표현. 왜 당신은 하나의 패턴이 필요합니까? ([0-9] *) 이후에 모든 옵션 마커를 사용할 수 있습니까? –

+0

Edittext ... 안드로이드가 된 것 같습니다. 안 그래? – JavaDM

+0

yes in android only @ WEBALDO.at – krishh

답변

1

String decimalPattern = "([0-9]*)\\.([0-9]*)".과 일치하며 integerPattern은 항상 일치합니다. *은 0 이상을 의미하기 때문입니다. 나는 부호없는 정수와 수레 일치

String pattern = "^([0-9]+(?:\\.[0-9]*)?)"; 

같은 것을 사용합니다.

편집 한

는 단어 경계 \\b으로, .

String pattern = "\\b([0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)\\b"; 

나는 또한 일치하는 문자열의 시작을 의미 ^을 대체 시작으로, 또한 부호 수레와 일치합니다.

+0

안녕하세요. @davide 잘 작동하지만 .xxx로 입력하면 false를 반환합니다. – krishh

+0

안녕하세요 @davide 입력하면 작동하지 않습니다. (점)은 false를 반환하는 것을 의미합니다. pls help me – krishh

0

을 사용 입력 유형을 설정하십시오 :

EditText text = new EditText(this); 
text.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL); 
0

^[0-9]+(\\.[0-9]+)?$과 같은 것을 사용할 수 있습니다.

위의 코드는 문자열이 하나 이상의 숫자 인 (임의로)과 그 뒤에 소수점 및 하나 이상의 숫자로 구성되어 있는지 확인합니다.

관련 문제