首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift RegEx国际版

问Swift RegEx国际版
EN

Stack Overflow用户
提问于 2015-05-04 12:48:45
回答 1查看 776关注 0票数 0

在用户在日期选择器中输入生日后,我将在regEx中检查有效的生日。

问题是,如果手机是俄语、中文或任何其他使用其他字符的语言,RegEx将无法正常工作。

有没有一种简单的方法可以将月份转换成数字(1-12),即使月份是以字母显示的,也可以在任何语言中工作?

如果有这样一种方法,无论简单与否,检查用户是否恰好13岁或更老要容易得多,而不是仅仅使用年份。

代码语言:javascript
复制
func isValidBirthday(testStr4:String) -> Bool {
    println("validate birthday: \(testStr4)")

    let birthdayRegEx = "[A-Z0-9a-z, .]+(19[0-9][0-9]|200[0-3]|2003)"

    let birthdayTest = NSPredicate(format: "SELF MATCHES %@", birthdayRegEx)
    return birthdayTest.evaluateWithObject(testStr4)

}
EN

回答 1

Stack Overflow用户

发布于 2015-05-04 18:58:09

我有一个检查正则表达式的实用程序类,在我的许多项目中使用

代码语言:javascript
复制
class Regex {

    let internalExpression: NSRegularExpression!
    let pattern: String

    init(_ pattern: String) {
        self.pattern = pattern
        var error: NSError?
        internalExpression = NSRegularExpression(pattern: pattern, options: .CaseInsensitive, error: &error)
    }

    func test(input: String) -> Bool {
        if let matches = internalExpression?.matchesInString(input, options: nil, range:NSMakeRange(0, count(input))) {
            return matches.count > 0
        }
        return false
    }
}

对于您的案例:

代码语言:javascript
复制
if Regex("^(19|20)\\d\\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$").test(DateStringValue) {
    // Code to be executed in here
}

希望能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30022808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档