检查 Swift 中的密码字符串强度标准

2023-12-02

我的密码强度标准如下:

8个字符长度 无特殊字符 至少 1 个数字 至少 1 个字母


update: Xcode 8.3.2 • 斯威夫特 3.1

enum PasswordError: String, Error {
    case eightCharacters
    case oneUppercase
    case oneLowercase
    case oneDecimalDigit
}

extension String {
    func validatePassword() throws  {
        guard count > 7
            else { throw PasswordError.eightCharacters }
        guard rangeOfCharacter(from: .uppercaseLetters) != nil
            else { throw PasswordError.oneUppercase }
        guard rangeOfCharacter(from: .lowercaseLetters) != nil
            else { throw PasswordError.oneLowercase }
        guard rangeOfCharacter(from: .decimalDigits) != nil
            else { throw PasswordError.oneDecimalDigit }
    }
}

let myPass = "12345678"

do {
    try myPass.validatePassword()
    print("valid password action")
} catch let error as PasswordError {
    print("Password error:", error) 
    switch error {
    case .eightCharacters:
        print("Needs At Least Eight Characters action")
    case .oneUppercase:
        print("Needs At Least one Uppercase action")
    case .oneLowercase:
        print("Needs At Least one Lowercase action")
    case .oneDecimalDigit:
        print("Needs At Least One DecimalDigit action")
    }
} catch {
    print("error:", error)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查 Swift 中的密码字符串强度标准 的相关文章

随机推荐

  • 在未来的特定时间在iOS中运行后台任务

    有没有办法在 iOS 7 中连接后台任务 例如切换位置服务的使用 以在特定时间点 例如明天早上 运行 而无需用户打开应用程序 或者无需持续运行后台进程 我知道的唯一选择是在所需的时间向设备发送推送通知 但是有人知道有任何纯粹的设备上替代方案
  • 合并两个具有不同列的表mysql

    我想合并两个具有不同列的表mysql 例如 表格1 item id title slug type views updatedAt createdAt 1 sometitle someslg 1 43454 timestamp timest
  • TYPO3:未找到模板。无法解决视图的操作

    我正在尝试使用 TYPO3 后端模块 当我单击后端左侧菜单中的模块时 我试图获取视图 但是 当我单击此按钮时 我收到以下消息 抱歉 未找到请求的视图 技术原因是 没有找到模板 无法解析 MyVendor MyModule Controlle
  • 如何创建从反射获得的类型列表

    我有一个代码 如下所示 Assembly assembly Assembly LoadFrom ReflectionTest dll Type myType assembly GetType ReflectionTest TestObjec
  • 将序列中的值分配给一组连续的行,将某些行留空

    我试图对几个连续的行进行分组 并为它们分配相同的值 同时将某些行留空 当未满足某个条件时 我的数据是位置 xy 坐标 测量日期 时间以及测量之间的时间跨度 以某种方式简化 它们看起来像这样 ID X Y Time Span 1 3445 7
  • 在 C# 中列出位于 SFTP 服务器上的 ZIP 文件内的文件

    我需要通过 ASP NET Core 以编程方式处理来自 SFTP 服务器 WinSCP 的 ZIP 文件内的文件夹 有什么方法可以获取 ZIP 文件中的文件列表而无需下载到本地计算机吗 作为 文件大小会很大并且不会保持一致 任何帮助 将不
  • Windows Phone 8 应用程序的用户名和密码数据

    我正在编写一个 Windows Phone 8 应用程序 该应用程序使用 API 来提取该应用程序需要的一些数据 并且要使用该 api 需要用户名和密码 我已获得此用户名和密码 它似乎可以工作 但是我想知道在应用程序中使用此用户名和密码的正
  • 通过运行时调用一个块,有什么类似于 NSInitation 的吗?

    我有未知类型的块 如id 和需要传递到该块的参数数组 参数可以是对象或装箱为 NSNumber NSValue 的数字 结构 Block 还可以返回一个对象 数字或结构 这是一个库代码 参数的类型事先是未知的 假设我可以动态地从块描述符中读
  • javascript 在 $.mobile.changePage() 之后停止工作

    我有两个页面 index html 和 main html 当我将 main html 页面设置为我的应用程序的默认页面时 java 脚本可以工作 但是当我将 index html 设置为主要页面时 重定向后 main html 上的 ja
  • svn 客户端/服务器版本

    如果我理解正确的版本颠覆定义 服务器上的结构存储库 客户端工作副本的结构 客户端和服务器之间的API 一旦我们安装了 svn 服务器 我们就不会触及 升级它 客户端的情况更加复杂 在客户端 Windows 我们目前使用乌龟vn 它的版本 如
  • 在画架中跨越多个精灵表时动画出现卡顿

    使用 EaselJS 我有一个动画 用户可以使用自定义滚动浏览 滑块 它使用 10 个精灵表来显示 152 个尺寸为 1924 x 的帧 1708 images were declared above in style var chromo
  • JavaScript Blob 下载二进制文件,创建损坏的文件

    我有一个二进制文件 pythonpickle文件 准确地说 每当请求这样的文件时 我都会在服务器端创建一个 然后通过 Flask 将其发送到客户端send file作为 AJAX 请求 接下来我需要自动下载这个文件到客户端 所以我使用了这个
  • 如何自动公开模块中目录中的所有 .rs 文件?

    我有从 protobuf 定义生成的模块文件 文件很多 并且会随着时间的推移而增长 这是结构 proto rust src lib rs proto rust src protos lots of auto generated rs fil
  • 以设计器的方式在Form的基类中显示handler

    我有一个继承自 Form 的基类 它在所示上注册了一个事件处理程序 class BaseClass Form public BaseClass base Shown new EventHandler BaseClass Shown void
  • 语法错误:“分隔符”此处输入无效

    我的有一个错误stored procedure使用 mysql 5 6 我正在使用 Workbench 6 3 CE 我的代码如下 DELIMITER this line shows error why CREATE PROCEDURE D
  • 如何获取两个字符 [string] 之间的字符串? PHP [重复]

    这个问题在这里已经有答案了 string1 This is test example string2 This is test example 2 string3 This is test example 3 我怎样才能得到以下结果 For
  • .NET Framework 支持空操作语法或单例

    使用现有框架时 有时您需要传入一个不执行任何操作的操作委托 通常是原始开发人员添加的扩展点 例子 var anObject new Foo gt 大概 Foo 对象会在某个时候调用这个委托 我的目标是消除 的使用 因为我的风格规定 需要独立
  • url 编码、Form 编码和 mailto: 编码

    我对与 HTML 相关的整个编码问题有点困惑 我不是指标头中的字符集或 XML 序言中的编码 我明白了 让我解释一下 当 mailto 与表单中的锚点或提交按钮一起使用时 空格将编码为 20 换行 回车 换行 行尾 将编码为 0A 当 en
  • 如何用git比较两个标签?

    我想在两个标签之间进行比较 并在这两个标签之间提交更改 能告诉我命令吗 git diff tag1 tag2 或显示它们之间的日志 git log tag1 tag2 有时只查看已更改的文件列表可能会很方便 git diff tag1 ta
  • 检查 Swift 中的密码字符串强度标准

    我的密码强度标准如下 8个字符长度 无特殊字符 至少 1 个数字 至少 1 个字母 update Xcode 8 3 2 斯威夫特 3 1 enum PasswordError String Error case eightCharacte