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

求助:Java正则表达式实现字母数字代码的*掩码功能

字母数字代码掩码正则解决方案

需求回顾

需要实现字母数字代码的掩码处理,规则如下:

  • 保留所有前导零
  • 保留前4个非零字符
  • 保留最后4个字符
  • 中间部分替换为*
    之前使用的正则(?<=[^0].{3})\w+(?=\w{4})无法处理字符串中间包含0的情况。

可行正则及实现

正则表达式

(^0*)([1-9A-Za-z]\w{3})(.*)(\w{4}$)

替换逻辑

借助支持回调替换的语言(如JavaScript、Python),将中间匹配到的部分替换为对应长度的*:

JavaScript示例

const maskCode = (code) => {
  return code.replace(/(^0*)([1-9A-Za-z]\w{3})(.*)(\w{4}$)/, (_, p1, p2, p3, p4) => {
    return `${p1}${p2}${'*'.repeat(p3.length)}${p4}`;
  });
};

Python示例

import re

def mask_code(code):
    def replace_func(match):
        p1, p2, p3, p4 = match.groups()
        return f"{p1}{p2}{'*' * len(p3)}{p4}"
    return re.sub(r'(^0*)([1-9A-Za-z]\w{3})(.*)(\w{4}$)', replace_func, code)

验证示例

输入输出
0001113033AA556089810001113*********8981
234562374723478239232345************3923
000000000900000000000000000009000***0000
0900800080006005000009008***********0000
AAAABBBBCCCCDDDDEEEEAAAA************EEEE
0000BBBBCCCCDDDDEEEE0000BBBB********EEEE

正则拆解

  • ^0*:匹配开头所有连续的前导零,存入分组1
  • [1-9A-Za-z]\w{3}:匹配第一个非零字母数字字符,再紧跟3个任意字母数字,即前4个有效非零字符,存入分组2
  • .*:匹配中间所有需要掩码的字符,存入分组3
  • \w{4}$:匹配结尾的4个字母数字字符,存入分组4

替换时用*填充分组3的长度,再拼接所有分组即可满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 09:53:13