我的函數應該處理每個正則表達式並返回true或false。這是行之有效的...現在仍然正則表達式不能用於空字符串 - 斯威夫特
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("")
是錯誤的。但是,我怎樣才能修復我的正則表達式,它返回false? 有時我使用正則表達式.*
我的函數也應該處理這個。所以我不能在你的正則表達式添加^
和$
作出這樣
if input.isEmpty { return false }
我會加入「^」和「$」(如果我沒記錯correclty我正則表達式),以您的正則表達式來表示,就是需要使用從開始到結束的字符串去,而且我改爲調用'numberOfMatchesInString:options:range:'。 – Larme
只更改正則表達式不起作用。我會嘗試numberOfMatchesInString:options:range – kuzdu
當然,只有其中一個選項不起作用,我會說「和」。所以'let pattern =「^。{7} $」//準確地說7個數字;讓正則表達式=嘗試! NSRegularExpression(pattern:pattern,options:[.caseInsensitive]);讓numberOfOccurences = regex.numberOfMatches(in:input,options:[],range:NSMakeRange(0,input.characters.count));返回(numberOfOccurences!= 0)'訣竅。 – Larme