import Foundation
enum RegexValidate {
case email(_: String) // 郵箱
case cnPhoneNum(_: String) // 手機
case carNum(_: String) // 車牌號
case username(_: String) // 登錄名
case password(_: String) // 密碼
case nickname(_: String) // 昵稱
case URL(_: String) // 網(wǎng)址
case IP(_: String) // ip
case idCard(_: String) // 身份證號
case numbers(_: String) // 只包含數(shù)字
case lettersAndNumbers(_: String) // 只包含字母和數(shù)字
case chinese(_: String) // 中文
var isRight: Bool {
var predicateStr: String!
var currObject:String!
switch self {
case let .email(str):
predicateStr = "^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.]{2,6})$"
currObject = str
case let .cnPhoneNum(str):
predicateStr = "^1(3[4-9]|4[7]|5[0-27-9]|7[08]|8[2-478])\\d{8}$"
currObject = str
case let .carNum(str):
predicateStr = "^[A-Za-z]{1}[A-Za-z_0-9]{5}$"
currObject = str
case let .username(str):
predicateStr = "^[A-Za-z0-9]{6,20}+$"
currObject = str
case let .password(str):
predicateStr = "^[a-zA-Z0-9]{6,24}+$"
currObject = str
case let .nickname(str):
predicateStr = "^[\\u4e00-\\u9fa5]{4,8}$"
currObject = str
case let .URL(str):
predicateStr = "^(https?:\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w \\.-]*)*\\/?$"
currObject = 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]?)$"
currObject = str
case let .idCard(str):
predicateStr = "(^[1-9]\\d{5}(18|19|([23]\\d))\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$)|(^[1-9]\\d{5}\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{2}$)"
currObject = str
case let .numbers(str):
predicateStr = "^[0-9]+$"
currObject = str
case let .lettersAndNumbers(str):
predicateStr = "^[a-zA-Z0-9]{1,30}+$"
currObject = str
case let .chinese(str):
predicateStr = "^[\\u4e00-\\u9fa5]{0,100}$"
currObject = str
}
let predicate = NSPredicate(format: "SELF MATCHES %@" ,predicateStr)
return predicate.evaluate(with: currObject.trimmingCharacters(in: .whitespacesAndNewlines))
}
}
// used 使用方式
/*
let vaString: Bool = RegexValidate.chinese("中 ").isRight
print(vaString)
// print "ture"
*/
[Swift4.2] iOS常用正則表達式 enum封裝使用
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。