2016-12-04 73 views
0

我一直在嘗試編寫一個函數來驗證給定的Double是否是1-100之間的數字。而且只有整數,所以像1.5這樣的東西是不允許的。允許將是1,2,3,...,100。我使用下面的正則表達式 - >使用Regex檢查Double值是否爲特定格式

"^([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

順便說一句 - 爲什麼「雙」?聽起來像你只需要整數。 '3.14'是1和100之間的雙倍。 – rmaddy

+0

並闡明'input'是什麼。 – rmaddy

回答

0

你不需要正則表達式或謂詞。只需做一些基本檢查如下:

func validate(input: Double) -> Bool { 
    return input >= 1 && input <= 100 && round(input) == input; 
} 
相關問題