我遇到了一个有趣的挑战,在这里找不到答案。我有一串文字,可能包含一个帐号。
例子:
"Hi, my account number is 1234 5678 9012 2345 and I'm great."
帐号可以由用户输入,有多种形式:
以下是基本和潜在的可能性:
1234 1234 1234 1234
1234 1234 1234 1234 1
BE12 1234 1234 1234
1234-1234-1234-1234
1234.1234.1234.1234
1234123412341234
12341234 1234 1234
1234-1234-1234-1234-1
1234.1234.1234.1234.1
12341234123412341
12341 234 1234 12341
BE12-1234-1234-1234
be12-1234-1234 1234
Be12.1234.1234-1234
BE12123412341234
(基本上是带连字符,空格或点的中间整数,但IBAN格式除外,其开头有两个字符)
我需要的输出是所有被屏蔽的东西,除了最后四位数字。
"Hi, my account number is **** **** **** 2345 and I'm great."
我认为我应该如何解决这个问题:
你会怎么做?
谢谢!
最佳答案
您可以将上述所有内容与以下内容匹配:
\b[\dX][-. \dX]+(\d{4})\b
...并替换为
*
x strlen(match) - 4
+ \1
,请参阅a demo on regex101.com。在
JavaScript
中:var string = "Hi, my account number is 1234 5678 9012 2345 and I'm great.";
var new_string = string.replace(/\b[\dX][-. \dX]+(\d{4})\b/g, function(match, capture) {
return Array(match.length-4).join("*") + capture;
});
print(new_string);
参见a demo on ideone.com。
关于javascript - Javascript-屏蔽字符串中的帐号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42939152/