@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;
}