2012-09-04 2 views
0

텍스트 필드에 양수 및 음수 10 진수 값을 모두 허용해야합니다. 그래서 정규식 UITextfield에서 원하지 않는 문자를 피하는 방법은 무엇입니까?

#define FLOAT_REGEX @"-[0-9]+(\.[0-9][0-9]?)?" 

-(BOOL) checkForDecimalValue:(NSString *) string 
{ 
NSPredicate *confidenceTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",FLOAT_REGEX]; 
return [confidenceTest evaluateWithObject:string]?YES:NO; 
} 

을 사용하지만 (예 : 100, 200에 대한 등) 어떤 소수점없이 오직 양의 값을 입력 할 경우 허용되지 않습니다. 그것은 양수 값과 정수도 허용해야합니다.

답변

3

는 다음과 같은 라인이 사용 대체 :이 당신이 원하는에 도움이

#define FLOAT_REGEX @"^[-]?[0-9]*(.[0-9]*)?$" 

희망. 유효 기간을 확인하십시오. here

+0

귀하의 회신에 감사드립니다.이 Regex를 알 수없는 escapeSequence \ d로 경고하고 있습니다. 또한 양수 값을 허용하지 않습니다. –

+0

편집 및 새로운 표현으로 변경 ..이 작품이 작동하는지 확인하십시오 .. 나를 위해 작동 –

+0

정말 고마워 ... 내 문제가 해결되었습니다 .. –

0

제로 이상의 다른 숫자 뒤에 내지 1-9에서 한 디지트 :

^[1-9]\d*$ 

디지트이어서 선택적으로 소수점 수 있도록한다.

^[1-9]\d*(\.\d+)?$ 

참고 :

개시에 ^$ 앵커 후 임의로 소수점 뒤에 0 이상의 다른 숫자 뒤에 내지 1-9에서 숫자는 적어도 한 디지트 뒤에 과 끝은 기본적으로 전체 문자열 패턴을

()? 경기 0 또는 쉼표를 처리 할 수있는 브라켓 사이의 모든 일

업데이트의 1 일치해야한다는 :

정규 표현식에서 .은 특별한 의미가 있습니다. 단일 문자와 일치해야합니다. 글자 그대로 . 문자열과 일치 시키려면 \.을 사용하여 .을 이스케이프 처리해야합니다. 위의 정규 표현식에서 \.의 의미입니다. 당신이 쉼표를 사용하려는 경우 그래서 그 대신 패턴이 단순히 : 당신이 숫자의 그룹 사이 .과 적분 사이 ,을 허용하려면

^[1-9]\d*(,\d+)?$ 

또한 업데이트는 쉼표와 마침표

을 처리하고, 소수 부분은 시도 :이 예

^[1-9]\d{0,2}(\.\d{3})*(,\d+)?$ 

는 3 자리 숫자 다음 선택적으로 쉼표와 숫자 다음에 다음 최대 2 다른 자리 마침표 0 개 이상의 그룹 다음 범위 1-9의 숫자입니다 이전과. 어디서든 숫자 사이에 .을 허용하려면

다음 시도 :

^[1-9][\.\d]*(,\d+)?$ 

을 0 개 이상의 숫자 또는 마침표 선택적으로 쉼표 하나 개 이상의 숫자 뒤에 숫자 1-9, 즉 .

심판 : Decimal or numeric values in regular expression validation

그것이 도움이되기를 바랍니다, 행복 코딩 :

관련 문제