8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ひらがな、カタカナ、英数字、URLを判定するExtension

Posted at

コード

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で判定する形式を設定しております。
電話番号のチェックやスペルチェック等もできるようです。


簡易的なバリデーションチェックを行いたい時に使用しています。
役に立てば幸いです。
ありがとうございました。

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?