Mit dem folgenden Code wird ermittelt, ob die Mobiltelefonnummer in alphanumerischen Zeichen halber Breite eingegeben wird. Auf den ersten Blick scheint es normal zu funktionieren, aber damit wird true zurückgegeben, unabhängig davon, ob es als "090-0000-0000" mit voller Breite oder als "090-0000-0000" mit halber Breite beurteilt wird, und es ist nicht möglich, zwischen voller Breite und halber Breite zu unterscheiden.
func checkPhoneNum(string: String) -> Bool {
let format = "[0-9]{3}-[0-9]{4}-[0-9]{4}"
let predicate = NSPredicate(format:"SELF MATCHES %@", format)
return predicate.evaluate(with: string)
}
Wie oben erwähnt, kann NS Predicate nicht alle Zeichen mit halber Breite unterscheiden, daher trifft NS Regular Expression die folgenden Beurteilungen. Dies gibt false für die volle Breite und true für die halbe Breite zurück.
func checkPhoneNum(string: String) -> Bool {
let format = "[0-9]{3}-[0-9]{4}-[0-9]{4}"
let regexp = try! NSRegularExpression.init(pattern: format, options: [])
let nsString = string as NSString
let matchRet = regexp.firstMatch(in: string, options: [], range: NSRange.init(location: 0, length: nsString.length))
return matchRet != nil
}
http://aryzae.hatenablog.com/entry/2017/12/13/004159
Recommended Posts