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

求符合特定规则的促销码正则表达式(Swift/SwiftUI适用)

满足需求的正则表达式及Swift使用说明

正确的正则表达式

^(?=(.*[a-zA-Z]){3,})[a-zA-Z0-9]{14}$

规则拆解与表达式解释

  • 恰好14个字符:[a-zA-Z0-9]{14} 限定只能是字母/数字,且长度正好14;配合开头的^和结尾的$,确保校验覆盖整个字符串,不会出现部分匹配的情况。
  • 仅拉丁字母和数字:[a-zA-Z0-9] 明确只允许大小写拉丁字母和阿拉伯数字。
  • 至少3个字母:(?=(.*[a-zA-Z]){3,}) 是正向预查,提前校验字符串里至少包含3个字母。.* 匹配任意数量的前置字符,[a-zA-Z] 匹配单个字母,{3,} 要求这样的字母至少出现3次。

Swift/SwiftUI中的使用示例

你可以直接用Swift的字符串正则匹配功能来校验输入,比如:

import Foundation

func isValidInput(_ input: String) -> Bool {
    let pattern = "^(?=(.*[a-zA-Z]){3,})[a-zA-Z0-9]{14}$"
    return input.range(of: pattern, options: .regularExpression) != nil
}

// 测试示例
let validString = "XyZ12345678901"
let invalidString = "12345678901234" // 无字母,不符合规则
print(isValidInput(validString)) // 输出 true
print(isValidInput(invalidString)) // 输出 false

你之前表达式的问题

你写的(?=(.*[a-zA-Z]){3,}([0-9]){0,}){14,14}$存在几个错误:

  1. 缺少开头的^,可能会匹配字符串的末尾片段,而非整个字符串;
  2. 预查里的([0-9]){0,}完全多余,规则不限制数字数量,无需额外声明;
  3. 给预查断言加{14,14}是错误的,预查是零宽度的,不能用次数限定,这会导致整个逻辑失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 17:35:23