Swift - 郵箱、手機號碼、車牌號等正則判斷

郵箱、手機號碼、車牌號等正則判斷

enum Validate {
        case email(_: String)          //  郵箱
        case phoneNumber(_: String)    //  手機號
        case userName(_: String)       //  用戶名
        case password(_: String)       //  密碼
        case nickName(_: String)       //  昵稱
        case postalCode(_:String)      //  郵編
        case URL(_: String)            //  URL
        case IP(_: String)             //  IP
        case isChinese(_: String)      //  是否全是中文字符
        case idNumber(_: String)       //  身份證號

        var isRight: Bool {
            var predicateStr:String!
            var currentObject:String!
            switch self {
            case let .email(str):
                predicateStr = "^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.]{2,6})$"
                currentObject = str
            case let .phoneNumber(str):
                predicateStr = "^((1[34578][0-9]{9})|((0\\d{2}-\\d{8})|(0\\d{3}-\\d{7,8})|(0\\d{10,11}))$"
                currentObject = str
            case let .userName(str):
                predicateStr = "^([\\u4E00-\\u9FA5A-Za-z0-9_]{2,10}$)"
                currentObject = str
            case let .postalCode(str):
                predicateStr = "^[0-8]\\d{5}(?!\\d)$"
                currentObject = str
            case let .password(str):
                predicateStr = "^[a-zA-Z0-9]{6,20}+$"
                currentObject = str
            case let .nickName(str):
                predicateStr = "^([\\u4E00-\\u9FA5A-Za-z0-9_]{2,10}$)"
                currentObject = str
            case let .URL(str):
                predicateStr = "^(https?:\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w \\.-]*)*\\/?$"
                currentObject = str
            case let .IP(str):
                predicateStr = "^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"
                currentObject = str
            case let . isChinese(str):
                predicateStr  = "(^[\u{4e00}-\u{9fa5}]$)"
                currentObject = str
            case let . idNumber(str):
                predicateStr  = "(^[0-9]{15}$)|([0-9]{17}([0-9]|[xX])$)"
                currentObject = str
            }
            let predicate =  NSPredicate(format: "SELF MATCHES %@" ,predicateStr)
            return predicate.evaluate(with: currentObject)
        }
    }

使用方法

Validate.email("test@163.com").isRight
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容