私の関数はすべての正規表現を処理し、trueまたはfalseを返さなければなりません。良い取り組んでいます...まだ今空の文字列で正規表現が機能しない - Swift
func test(_ input: String) -> Bool {
let pattern = ".{7}" //allow exactly 7 numbers
let regex = try! NSRegularExpression(pattern: pattern, options: [NSRegularExpression.Options.caseInsensitive])
let leftover = regex.stringByReplacingMatches(in: input, options: [], range: NSMakeRange(0, input.characters.count), withTemplate: "")
if leftover.isEmpty {
return true
}
return false
}
print(test("123456")) //false
print(test("1234567")) //true
print(test("12345678")) //false
print(test("")) //true - I expect false
をtest("")
が偽である理由だから私は理解しています。しかし、正規表現を修正して、それが偽になるのはどうすればいいですか? 時々私は正規表現を使用します.*
私の関数はこれも処理する必要があります。だから私はあなたの正規表現で^
と$
を追加することにより、ソリューションは、あなたの正規表現は、あなたがこれを行うことができますので、有効にする文字列全体にマッチしなければならないことを指定することで、この
if input.isEmpty { return false }
(私は正規表現をcorreclty覚えていれば)私はですが、最初から文字列の末尾に使用する必要があり、私がしたいことを言うためにあなたの正規表現に「^」を追加して行くと「$」と思います代わりに 'numberOfMatchesInString:options:range:'を呼び出してください。 – Larme
正規表現の変更だけが機能しません。私はnumberOfMatchesInStringを試してみます:options:range – kuzdu
もちろん、オプションのうちの1つだけが動作しません。だから 'let pattern =" ^。{7} $ "//正確に7つの数字を許してください。正規表現=試してみましょう! NSRegularExpression(パターン:パターン、オプション:[.caseInsensitive]); numberOfOccurences = regex.numberOfMatches(入力:options:[]、範囲:NSMakeRange(0、input.characters.count)); return(numberOfOccurences!= 0) 'はトリックを行います。 – Larme