检查字符串中的值

时间:2015-03-17 23:29:33

标签: regex swift

这不应该那么难......

我想检查依赖于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
    }

1 个答案:

答案 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的当前日期进行比较。