按位限制车牌号(包括新能源)

  @objc func textFieldTextHasChange(_ notification:NSNotification)

    {
        var strNew:NSString? = self.newPlateNumTextFiled.text as NSString?
        let selectedRange = self.newPlateNumTextFiled.markedTextRange

        if (selectedRange == nil) { // 没有高亮选择的字
            if (strNew == nil || strNew == "") {
                return
            }

            let lang = UIApplication.shared.textInputMode?.primaryLanguage

            LZHLog(message: strNew!.length)


            for i in 0...strNew!.length - 1 {
                LZHLog(message: i)

                if strNew == ""{
                    break
                }

                let str:NSString = (strNew?.substring(with: NSRange(location: i, length: 1)) as? NSString)!
                if str == "-" {
                    break
                }


                LZHLog(message: str)

                if i == 0 {
                    let pattern = "([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1})"

                    if Library.isValidchar(charStr: str.substring(with: NSRange(location: 0, length: 1)), des: pattern) {

                    }else{
                        strNew = ""
                        break
                    }

                }else if i == 1 {

                    let pattern = "[A-Z]"

                    if Library.isValidchar(charStr: str.substring(with: NSRange(location: 0, length: 1)), des: pattern) {

                    }else{
                        strNew = strNew!.replacingCharacters(in: NSRange(location: i, length: strNew!.length - i), with: "") as NSString
                        break
                    }


                }else if i == 2 || i == 3 || i == 4 || i == 5 {
                    let pattern = "[A-HJ-NP-Z0-9]"

                    if Library.isValidchar(charStr: str.substring(with: NSRange(location: 0, length: 1)), des: pattern) {

                    }else{
                        strNew = strNew!.replacingCharacters(in: NSRange(location: i, length: strNew!.length - i), with: "") as NSString
                        break
                    }

                }else if i == 6 {
                    let pattern = "[A-HJ-NP-Z0-9挂学警港澳使领]"

                    if SmallKLibrary.isValidchar(charStr: str.substring(with: NSRange(location: 0, length: 1)), des: pattern) {

                    }else{
                        strNew = strNew!.replacingCharacters(in: NSRange(location: i, length: strNew!.length - i), with: "") as NSString
                        break
                    }


                }else if i == 7 {

                    if Library.isLicensePlate(plateStr: self.newPlateNumTextFiled.text!){

                    }else{
                        strNew = strNew!.replacingCharacters(in: NSRange(location: i, length: strNew!.length - i), with: "") as NSString
                        break
                    }

                }

            }

            LZHLog(message: strNew)
            self.newPlateNumTextFiled.text = strNew as String?
        }else { //有高亮文字
            //do nothing

        }


    }

    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

        LZHLog(message: string)

        if string == "-" {
            return false
        }

        return true
    }


    // 正则验证车牌,验证通过返回true,不通过返回false
    
    class func isLicensePlate(plateStr:String) ->Bool {
        //        let pattern = "^(([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z](([0-9]{5}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))|([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳使领]))$"
        
        
        let pattern = "([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}" +
            "[A-Z]{1}" +
            "(([0-9]{5}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))|" +
            "([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}" +
            "[A-Z]{1}" +
            "[A-HJ-NP-Z0-9]{4}" +
        "[A-HJ-NP-Z0-9挂学警港澳]{1})"
        let pred = NSPredicate(format: "SELF MATCHES %@", pattern)
        let isMatch:Bool = pred.evaluate(with: plateStr)
        return isMatch;
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会飞的鱼不会累

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值