2016-12-04 9 views
0

与えられたDoubleが1-100の間の数値であることを検証する関数を記述しようとしています。そして整数だけなので、1.5のようなものは許されません。許可されるのは1,2,3、...、100です。私はそのために、以下の正規表現を使用しています - >Double値がRegexで特定の形式であることを確認してください

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

しかし、私の入力100は、私の関数がtrue戻って私を与えることはありません場合でも。どのように私の正規表現が間違っていますか?

これは、入力が二重にする必要があり、私のコード

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 - なぜ「ダブル」ですか?あなたは整数がほしいと思うように聞こえます。 '3.14'は1から100までの倍数です。 – rmaddy

+0

' input'が何であるかを明確にします。 – rmaddy

答えて

0

正規表現や述語は必要ありません。

func validate(input: Double) -> Bool { 
    return input >= 1 && input <= 100 && round(input) == input; 
} 
関連する問題