KKStringValidator 0.2.0

KKStringValidator 0.2.0

测试已测试
Lang语言 SwiftSwift
许可 MIT
发布最后发布2016年11月
SPM支持 SPM

Kostya 维护。



  • 作者
  • k.krizhanovskii

Swift 字符串验证器

关于

一个基于标准进行简单且快速的 字符串 验证的库。

安装

KKStringValidator 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中

pod 'KKStringValidator'

核心思想

对于项目,必须验证某些 输入字段字符串 等,以确保它们接受某些标准(例如 长度、存在 大写字母、存在 数字 等)。

KKStringValidator 帮助检查 字符串,以使它们满足接受的 标准

核心功能

  • 通过一个或多个 标准 验证 字符串
  • 标准 失败时可用强制中断(中断验证)
  • 存在默认 标准
  • 易于添加自定义 标准

示例

// import lib
import KKStringValidator

// code

    // Create criterias
    let lennghtCriteria = LengthCriteria(10)
    let regexpCriteria = RegexpCriteria("[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}")

    let criterias : [Criteriable] = [lennghtCriteria, UppercaseLetterExistCriteria(), LowercaseLetterExistCriteria(), NumberExistCriteria(), regexpCriteria]


    // validate
    StringValidator(criterias).isValide("q1Q", forceExit: false, result: { validator in
        switch validator {
            case .valid:
                print("All valid")
            case .notValid(let criteria):
                print(criteria.debugErrorString)
            case .notValides(let criterias):
                print("Criterias that fails:")
                _ = criterias.map({ print($0.debugErrorString)
                })
            }
    })

输出

Criterias that fails:
DEBUG:LengthCriteria:Lenght less than 10
DEBUG:RegexpCriteria:no mutch to regexp [A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}

UITextField 扩展

还创建了 UITextField扩展

/// extension for UITextField for validation
extension UITextField {
/// function for validating textField text
///
/// - Parameters:
///   - criterias: array of criterias
///   - forceExit: flag for force extit. default in false
///   - result: ValidatorResult object
public func validate(_ criterias : [Criteriable], forceExit:Bool = false, result:@escaping (ValidatorResult)->Void) {
    //code
}
}

用法示例

func textFieldDidEndEditing(_ textField: UITextField) {
    textField.validate([LengthCriteria(4)], result: { result in
        switch result {
            case .valid:
                print("All valid")
            case .notValid(let criteria):
                print(criteria.debugErrorString)
            case .notValides(let criterias):
                print("Criterias that fails:")
                _ = criterias.map({ print($0.debugErrorString)
                })
        }
    })
}

工作原理

首先,您必须从 可用标准 中获取所需的标准或创建自定义标准。所有标准都必须符合 协议

protocol Criteriable {
    /// debug string for helps detect problem
    var debugErrorString : String {get}

    /// Check if value conform to criteria
    ///
    /// - Parameter value: value to be checked
    /// - Returns: return true if conform
    func isConform(to value:String) -> Bool
}

然后您可以通过调用选择的标准来验证字符串:

StringValidator([\* array of choosed criterias *\]).isValide("" \* string to must be validate *\, forceExit: false, result: { validator in
        switch validator {
            /// all criterias was passed
            case .valid:
            print("All valid")

            /// first failed criteria
            case .notValid(let criteria):

            /// all failed criterias
            case .notValides(let criterias):
        }
})

就这些。您的字符串已验证,您得到结果。

可用标准列表

struct LengthCriteria : Criteriable { \\code } \\ check string length

struct UppercaseLetterExistCriteria : Criteriable { \\code } \\ check string contains one or more char in Uppercase

struct LowercaseLetterExistCriteria : Criteriable { \\code } \\ check string contains one or more char in Lowercase

struct NumberExistCriteria : Criteriable { \\code } \\ check string exist one or more numer

struct RegexpCriteria : Criteriable { \\code } \\ check string must to RegExp

struct RangeCriteria : Criteriable { \\code } \\ check string length inside range

struct FirstCharIsLetterCriteria : Criteriable { \\code } \\ check first char is letter and optional check if in uppercase

如何添加自定义标准

很容易。只需创建 struct 并符合 Criteriable 协议。 示例

struct MyCustomCriteria : Criteriable {
    var debugErrorString: String = debugMessage(MyCustomCriteria.self, message:"some debug message")
    func isConform(to value: String) -> Bool {
        /* some logic for check */
        return false
    }
}

就是这样。简单轻松 :)

作者

k.krizhanovskii, [email protected]

许可证

KKStatusBarService在MIT许可证下可用。

在此特此授予任何获取本软件和相关文档文件(以下简称“软件”)副本的个人免费权,可以在没有任何限制的情况下处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向软件提供的人进行操作,但须遵守以下条件

上述版权声明和本许可声明应包含在任何软件副本或其大部分副本中。

软件按“原样”提供,不提供任何形式的保证,无论是明示的还是隐含的,包括但不限于适销性、适用于特定目的和不侵害知识产权的保证。在任何情况下,作者或版权所有者不对因合同、侵权或其他原因引起的任何索赔、损害或其他责任承担责任,无论该等索赔、损害或其他责任是否与软件或其使用或其他操作相关。