2016-12-04 1 views
0

주어진 Double이 1-100 사이의 숫자인지 확인하는 함수를 작성하려고했습니다. 정수 만 가능하기 때문에 1.5와 같은 것은 허용되지 않습니다. 허용되는 값은 1,2,3, ..., 100입니다. 나는 그 다음 정규식을 사용하고있다. ->Double 값이 Regex로 특정 형식인지 확인하십시오.

"^([1-9][0-9]?$)|^100$" 

그러나, 내가 100을 입력하더라도, 내 함수는 결코 나를 되돌려주지 않는다. 내 정규식이 어떤면에서 잘못 되었나요?

func validate(input: Double) -> Bool { 

     let regex = "^([1-9][0-9]?$)|^100$" 

     let inputTest = NSPredicate(format: "SELF MATCHES %@", regex) 
     return inputTest.evaluate(with: String(input)) 
} 

입력이 두 번이어야 내 코드의 나머지 부분입니다.

+1

왜 정규식과 이에 대한 조건자를 사용하고 있습니까? 문자열을'Double'으로 변환하십시오. 성공하면'Double'의 값을 확인하십시오. – rmaddy

+0

BTW - 왜 'Double'입니까? 당신은 정수 만 원한 것처럼 들립니다. '3.14'는 1에서 100 사이의 double 값입니다. – rmaddy

+0

'input '이 무엇인지 밝혀줍니다. – rmaddy

답변

0

정규식이나 조건자를 필요로하지 않습니다. 다음과 같이 기본 점검을 수행하기 만하면됩니다.

func validate(input: Double) -> Bool { 
    return input >= 1 && input <= 100 && round(input) == input; 
} 
관련 문제