You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Swift编写验证合法用户名的正则表达式?

Swift 合法用户名正则验证方案

针对你提出的用户名规则,我整理了完全匹配的正则表达式,以及在Swift中的实际使用示例:

正则表达式说明

先直接给出符合所有要求的正则:

^[a-zA-Z0-9_]{1,13}$

拆解下每个部分的作用:

  • ^:匹配字符串的起始位置,确保用户名从有效字符开始
  • [a-zA-Z0-9_]:允许的字符集合——大小写英文字母、数字、下划线,刚好满足你“允许下划线,无特殊字符和空格”的要求
  • {1,13}:限制字符长度在1到13之间(包含两端)
  • $:匹配字符串的结束位置,避免用户名前后出现隐藏的无效字符(比如空格)

Swift 代码示例

在Swift中,你可以通过两种常见方式来验证:

方式1:使用 NSRegularExpression(更灵活,适合复杂场景)

func isValidUsername(_ username: String) -> Bool {
    let regexPattern = "^[a-zA-Z0-9_]{1,13}$"
    guard let regex = try? NSRegularExpression(pattern: regexPattern) else {
        return false
    }
    let range = NSRange(username.startIndex..., in: username)
    // 检查是否有且仅有一个完整匹配(整个字符串都符合规则)
    return regex.numberOfMatches(in: username, range: range) == 1
}

// 测试示例
print(isValidUsername("User_123")) // true
print(isValidUsername("TooLongUsername1234")) // false(长度超过13)
print(isValidUsername("User@Name")) // false(包含特殊字符@)
print(isValidUsername("User Name")) // false(包含空格)

方式2:使用 NSPredicate(更简洁,适合简单验证)

func isValidUsername(_ username: String) -> Bool {
    let regexPattern = "^[a-zA-Z0-9_]{1,13}$"
    let predicate = NSPredicate(format: "SELF MATCHES %@", regexPattern)
    return predicate.evaluate(with: username)
}

额外说明

  • 如果后续需要支持中文用户名,只需要调整字符集即可,但根据当前要求这里仅保留了字母、数字和下划线
  • 若要区分大小写(比如只允许小写字母),可以把[a-zA-Z]改成[a-z],默认NSRegularExpression是区分大小写的,如需不区分可添加.caseInsensitive选项

内容的提问来源于stack exchange,提问作者frankcrest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:24:35