这不应该那么难......
我想检查依赖于UIDatePicker的标签的值,并在用户年龄不足时返回警告消息。一切都有效,除了在约束的定义中存在错误。
正在读取的字符串采用长日期格式,例如" 1965年11月18日"
它有效'有时'甚至在2010年至2015年之间的某些年份,有时甚至根本不起作用。我已经尝试将第二个括号更改为[0-9]并且表示用户未成年,这意味着语法有问题或者我可能遗漏了某些东西?在此先感谢您的帮助!
func isValidBirthday(testStr4:String) -> Bool {
println("validate birthday: \(testStr4)")
let birthdayRegEx = "[A-Z0-9a-z ]+[, ]+[1900-2010]"
if let birthdayTest = NSPredicate(format: "SELF MATCHES %@", birthdayRegEx) {
return birthdayTest.evaluateWithObject(testStr4)
}
return false
}
答案 0 :(得分:1)
这里的问题是你的正则表达式。您不能按照您尝试的方式匹配1900-2010范围内的数字。相反,尝试
let birthdayRegEx = "[A-Z0-9a-z ]+[, ]+(19[0-9][0-9]|200[0-9]|2010)"
然而,似乎更自然的方法是将字符串转换为NSDate。您可以使用
之类的代码let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MMMM dd, yyyy"
let birthday = dateFormatter.dateFromString(testStr4)
然后将testStr4与timeIntervalSinceDate
的当前日期进行比较。