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

如何在C#中使用正则表达式实现IBAN号码的掩码处理

在C#中用正则实现IBAN掩码处理

要实现你需要的IBAN掩码规则,核心是通过正则捕获关键分段,再动态替换中间部分为星号。具体实现如下:

正则匹配逻辑

我们需要精准匹配IBAN的五个关键分段:

  1. 开头2个国家代码字母(原样保留)
  2. 紧随其后的任意5个字符(替换为5个*)
  3. 接下来的5个数字(原样保留)
  4. 中间过渡的所有字符(替换为对应数量的*)
  5. 结尾的3个数字(原样保留)

对应的正则表达式:

^([A-Z]{2}).{5}(\d{5})(.*)(\d{3})$
  • ^([A-Z]{2}):捕获开头2个字母(忽略大小写,兼容输入的小写字母)
  • .{5}:匹配接下来的5个任意字符(后续统一替换为*****)
  • (\d{5}):捕获接下来的5个数字
  • (.*):捕获中间所有剩余字符(直到最后3个数字前)
  • (\d{3})$:捕获结尾的3个数字

C# 代码实现

使用Regex.Replace结合匹配器委托,动态生成对应长度的星号:

using System;
using System.Text.RegularExpressions;

public static class IbanMasker
{
    public static string MaskIban(string iban)
    {
        if (string.IsNullOrWhiteSpace(iban))
            return iban;

        var ibanRegex = new Regex(@"^([A-Z]{2}).{5}(\d{5})(.*)(\d{3})$", RegexOptions.IgnoreCase);
        
        return ibanRegex.Replace(iban, match =>
        {
            // 把中间过渡部分的每个字符替换为*
            string middleAsterisks = new string('*', match.Groups[3].Length);
            
            // 拼接最终掩码结果
            return $"{match.Groups[1].Value.ToUpper()}*****{match.Groups[2].Value}{middleAsterisks}{match.Groups[4].Value}";
        });
    }

    // 测试示例
    public static void Main()
    {
        string germanIban = "DE12500123456789012345";
        string belgianIban = "BE12345123456345";
        
        Console.WriteLine(MaskIban(germanIban)); // 输出: DE*****12345*******345
        Console.WriteLine(MaskIban(belgianIban)); // 输出: BE*****12345*345
    }
}

额外说明

  • 大小写兼容:通过RegexOptions.IgnoreCase允许输入的IBAN字母为小写,输出自动转为大写国家代码
  • 自适应长度:中间星号数量根据原IBAN长度自动计算,适配不同国家的IBAN长度差异
  • 完整匹配:正则的^和$确保匹配整个IBAN字符串,避免部分匹配导致的错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 11:30:20