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

如何在Swift中使用正则表达式实现银行卡号掩码,仅显示前6位后2位

Swift 银行卡号正则掩码实现方案

实现逻辑

  • 用正则表达式分组捕获银行卡号的前6位、中间段、末尾2位
  • 将中间段替换为等长度的*字符
  • 扩展String类型封装方法,降低调用成本

完整实现代码

首先是String扩展封装:

import Foundation

extension String {
    /// 银行卡号掩码,仅保留前6位和最后2位,中间替换为*
    func mask() -> String {
        // 正则匹配规则:三个分组分别对应前6位、中间段、末尾2位
        guard let regex = try? NSRegularExpression(pattern: "^(.{6})(.*)(.{2})$", options: []) else {
            return self
        }
        let fullRange = NSRange(location: 0, length: utf16.count)
        guard let result = regex.firstMatch(in: self, range: fullRange) else {
            // 长度不足8位的异常场景,可按需调整返回规则
            return self
        }
        let prefix = (self as NSString).substring(with: result.range(at: 1))
        let suffix = (self as NSString).substring(with: result.range(at: 3))
        let starCount = result.range(at: 2).length
        return prefix + String(repeating: "*", count: starCount) + suffix
    }
}

调用示例

let cardNumber: String = "5890040000000016"
print("Output: ", cardNumber.mask()) // 输出:589004********16

如果你需要保留示例中传入正则参数的调用形式,只需要把方法参数调整为接收pattern字符串,内部动态生成NSRegularExpression实例即可,固定掩码规则的场景下直接封装专用方法易用性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:15:04