首页 文章

正则表达式替换前5个数字,无论它们之间有什么关系?

提问于
浏览
5

我正在努力实现以下匹配

Input

123-45-6789
123456789
1234

Reg Ex(s) Tried with output:

\d{5}

123-45-6789

12345 6789

1234

\d{2,3}

123 - 45 - 678 9

123456789

123 4

\d{3}-{0,1}\d{2}

123-45 -6789

12345 6789

1234

我需要提供这个正则表达式替换方法,我不希望替换“ - ”,它应该只替换前5位数而不改变格式:

Expected Output

123 - 45 -6789

12345 6789

1234

EDIT

在上面的示例输出中:

1>所有都与全局正则表达式2相匹配>加粗数字只能匹配

The Purpose

我需要屏蔽SSN,例如:444-55-6666变成### - ## - 6666而444556666变成##### 6666 . 不妨碍格式化 .

2 回答

  • 1

    您想要匹配并替换前五位数字:

    var str = `123-45-6789
    123456789
    1234
    `
    console.log(str.replace(/^(\D*\d\D*){5}/gm, function(match) {
        return match.replace(/\d/g, '*');
    }))
    
  • 1

    以下是查看它的其他方法:

    • 您想忽略所有非数字字符,然后获取前五个数字
    input.replace(/\D/g,'').substr(0,5);
    
    • 您希望匹配五个数字字符,无论它们出现在输入中的哪个位置
    input.match(/\d/g).slice(0,5);
    

    几乎总有不止一种方法可以解决问题 . 如果您无法弄清楚如何做您想做的事情,请尝试重新解决问题,直到您找到可以做的事情为止 .

相关问题