SwiftOC-开发案例收集Swift

常用正则表达式 Swift 4.2

2018-12-13  本文已影响3人  小奉不在乎

整理了一些常用的Swift正则表达式,包括最新的手机号验证,希望对小伙伴儿们有帮助。

extension String {
    /// 正则匹配手机号
    var isMobile: Bool {
        /**
         * 手机号码
         * 移动:134 135 136 137 138 139 147 148 150 151 152 157 158 159  165 172 178 182 183 184 187 188 198
         * 联通:130 131 132 145 146 155 156 166 171 175 176 185 186
         * 电信:133 149 153 173 174 177 180 181 189 199
         * 虚拟:170
         */
        return isMatch("^(1[3-9])\\d{9}$")
    }
    
    /// 正则匹配用户身份证号15或18位
    var isUserIdCard: Bool {
        return isMatch("(^[0-9]{15}$)|([0-9]{17}([0-9]|X)$)")
    }
    
    /// 正则匹配用户密码6-18位数字和字母组合
    var isPassword: Bool {
        return isMatch("^(?![0-9]+$)(?![a-zA-Z]+$)[a-zA-Z0-9]{6,18}")
    }
    
    /// 正则匹配URL
    var isURL: Bool {
        return isMatch("^[0-9A-Za-z]{1,50}")
    }
    
    /// 正则匹配用户姓名,20位的中文或英文
   var isUserName: Bool {
        return isMatch("^[a-zA-Z\\u4E00-\\u9FA5]{1,20}")
    }
    
    /// 正则匹配用户email
    var isEmail: Bool {
        return isMatch("[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}")
    }
    
    /// 判断是否都是数字
    var isNumber: Bool {
        return isMatch("^[0-9]*$")
    }
    
    /// 只能输入由26个英文字母组成的字符串
    var isLetter: Bool {
        return isMatch("^[A-Za-z]+$")
    }
    
    private func isMatch(_ pred: String ) -> Bool {
        let pred = NSPredicate(format: "SELF MATCHES %@", pred)
        let isMatch: Bool = pred.evaluate(with: self)
        return isMatch
    }
}

上一篇下一篇

猜你喜欢

热点阅读