Swift正则

这篇博客展示了如何在Swift中使用正则表达式进行字符串验证,包括检测用户名、非法字符、密码、手机号、身份证号码和数字。通过定义一个`RegexHelper`结构体和扩展`String`类型,提供了便捷的正则匹配方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import Foundation


//正则表达式

struct RegexHelper {

    let regex: NSRegularExpression

    init(pattern:String) throws {

        try regex = NSRegularExpression(pattern: pattern, options: NSRegularExpression.Options.caseInsensitive)

    }

    func match(_ input:String) ->Bool {

        let matches = regex.matches(in: input, options: [], range: NSMakeRange(0, input.count))

        return matches.count > 0

    }

}


//正则检测字符串

extension String {

    //MARK:检测用户名

    func CheckUserName() -> Bool {

        let patten = "(^[\u{4e00}-\u{9fa5}]{2,12}$)|(^[A-Za-z0-9_-]{4,12}$)"

        let regex = try! NSRegularExpression(pattern: patten, options: NSRegularExpression.Options.dotMatchesLineSeparators)

        if let _ = regex.firstMatch(in: self, options: NSRegularExpression.MatchingOptions(rawValue: 0), range: NSMakeRange(0, self.count)) {

            return true

        }

        return false

    }

    //MARK:检测非法字符

    func CheckInvalid() -> Bool {

        let pattern = "[`~!@#\\$%\\^&*\\(\\)\\+<>\\?:\\\"{},\\./\\;'\\[\\]]"

        _ = "[`~!@#%&*()<>:,;']"

        _ = "^([a-z0-9_\\.-])@([\\da-z\\.-]+)\\.([a-z\\.]{2,6})$"

        let regex = try! NSRegularExpression(pattern: pattern, options: NSRegularExpression.Options.dotMatchesLineSeparators)

        if let _ = regex.firstMatch(in: self, options: NSRegularExpression.MatchingOptions(rawValue: 0), range: NSMakeRange(0, self.count)) {

            return true

        }

        return false

    }

    //MARK:检测密码

    func CheckPassword() -> Bool {

        let pattern = "^[@A-Za-z0-9!#\\$%\\^&*\\.~_]{6,20}$"

        let regex = try! NSRegularExpression(pattern: pattern, options: NSRegularExpression.Options.dotMatchesLineSeparators)

        if let _ = regex.firstMatch(in: self, options: NSRegularExpression.MatchingOptions(rawValue: 0), range: NSMakeRange(0, self.count)) {

            return true

        }

        return false

    }

    //MARK:检测手机号

    func CheckPhoneNo() -> Bool {

        if let _ = self.range(of: "^1[3|4|5|7|8][0-9]{9}$", options: .regularExpression) {

            return true

        }

        return false

    }

    //MARK:检测身份证

    func CheckId() -> Bool {

        let pattern = "(^[0-9]{15}$)|([0-9]{17}([0-9]|X)$)"

        let regex = try! NSRegularExpression(pattern: pattern, options: NSRegularExpression.Options.dotMatchesLineSeparators)

        if let _ = regex.firstMatch(in: self, options: NSRegularExpression.MatchingOptions(rawValue: 0), range: NSMakeRange(0, self.count)) {

            return true

        }

        return false

    }

    //MARK:检测是否是纯数字

    func CheckNumber() -> Bool {

        let pattern = "^[0-9]+$"

        if NSPredicate(format: "SELF MATCHES %@", pattern).evaluate(with: self) {

            return true

        }

        return false

    }

    func CheckNumberTwo() -> Bool {

        let pattern = "^\\d+(\\.\\d{1,2})?$"

        if NSPredicate(format: "SELF MATCHES %@", pattern).evaluate(with: self) {

            return true

        }

        return false

    }

    //MARK:检测是否是银行卡号

    func CheckBankCard() -> Bool {

        let pattern = "^([0-9]{16}|[0-9]{19})$"

        let regex = try! NSRegularExpression(pattern: pattern, options: NSRegularExpression.Options.dotMatchesLineSeparators)

        if let _ = regex.firstMatch(in: self, options: NSRegularExpression.MatchingOptions(rawValue: 0), range: NSMakeRange(0, self.count)) {

            return true

        }

        return false

    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值