コード
import Foundation
extension String {
/// ひらがなかどうか
var isHiragana: Bool {
let range = "^[ぁ-ゞ ]+$"
return NSPredicate(format: "SELF MATCHES %@", range).evaluate(with: self)
}
/// カタカナかどうか
var isKatakana: Bool {
let range = "^[ァ-ヾ]+$"
return NSPredicate(format: "SELF MATCHES %@", range).evaluate(with: self)
}
//// 英数字かどうか
var isAlphanumeric:Bool {
let range = "[a-zA-Z0-9]+"
return NSPredicate(format: "SELF MATCHES %@", range).evaluate(with: self)
}
//// URLかどうか
var isUrl: Bool {
let linkValidation = NSTextCheckingResult.CheckingType.link.rawValue
guard let detector = try? NSDataDetector(types: linkValidation) else { return false }
let results = detector.matches(in: self, options: .reportCompletion, range: NSMakeRange(0, self.characters.count))
return results.first?.url != nil
}
}
ひらがな、カタカナ、英数字はNSPredicate
を用いて正規表現でチェックしています。
正規表現のところさえ変えれば他のものも判定出来ます。
URLはNSDataDetector
を用いてチェックしています。
NSTextCheckingResult.CheckingType
で判定する形式を設定しております。
電話番号のチェックやスペルチェック等もできるようです。
簡易的なバリデーションチェックを行いたい時に使用しています。
役に立てば幸いです。
ありがとうございました。