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

JavaScript如何用REGEX去除多IF判断 实现CPF输入实时格式化

可以实现,你可以通过正则分组捕获配合替换回调的方式完全去掉所有IF判断,和原逻辑输出完全一致,优化后的代码如下:

function getFormatedCPF(unformatedValue) {
    const onlyDigits = unformatedValue.toString().replace(/[^\d]/g, "").substring(0, 11);
    return onlyDigits.replace(/^(\d{3})(\d{0,3})(\d{0,3})(\d{0,2})$/, (_, p1, p2, p3, p4) => 
        `${p1}${p2 ? '.' + p2 : ''}${p3 ? '.' + p3 : ''}${p4 ? '-' + p4 : ''}`
    );
}

实现说明

  • 正则/^(\d{3})(\d{0,3})(\d{0,3})(\d{0,2})$/会将最多11位的纯数字拆分为4个捕获组:
    • 第一组固定匹配前3位数字
    • 第二组匹配第4到第6位(不足3位则匹配实际存在的位数)
    • 第三组匹配第7到第9位(不足3位则匹配实际存在的位数)
    • 第四组匹配第10到第11位(不足2位则匹配实际存在的位数)
  • 替换回调会根据捕获组是否存在值,自动拼接对应的分隔符,完全对齐你原有的多IF判断逻辑,适配用户输入过程中任意长度的中间状态。

效果验证

所有场景输出和原逻辑完全一致:

  • 输入99 → 输出99
  • 输入9999 → 输出999.9
  • 输入9999999 → 输出999.999.9
  • 输入99999999901 → 输出999.999.999-01

内容的提问来源于stack exchange,提问作者Paulo Künzel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:27:05