Le code ci-dessous est un processus permettant de déterminer si le numéro de mobile est entré en caractères alphanumériques demi-largeur. À première vue, cela semble fonctionner normalement, mais avec cela, true est renvoyé indépendamment du fait qu'il soit considéré comme pleine largeur "090-0000-0000" ou demi-largeur "090-0000-0000", et il n'est pas possible de faire la distinction entre pleine largeur et demi-largeur.
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)
}
Comme mentionné ci-dessus, NS Predicate ne peut pas faire la distinction entre les angles pleins et les demi-angles, donc l'expression régulière NS détermine comme suit. Cela renverra false pour la pleine largeur et true pour la demi-largeur.
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