0

我想屏蔽 IBAN。我只需要显示前 7 个字符和后 4 个字符。

例子:

输入:

PL61109010140000071219812874

输出:

PL61109***********2874

我写了以下正则表达式:

(?<=.{7})(.*)(?=.{4})

但是js不支持lookbehind

4

2 回答 2

3

您可以使用 Regex 中的组而不是 LookBehind

var myString = "PL61109010140000071219812874";
var myRegexp = /\w{7}(.*)\w{4}/g;
var match = myRegexp.exec(myString);
myString = myString.replace(match[1], '*********');
console.log(myString)

于 2016-11-27T07:29:44.373 回答
2

(?<=.{7}是一个lookbehind 断言,不幸的是Javascript regex 不支持lookbehind。

您可以substr在 Javascript 中使用和前瞻:

var s = 'PL61109010140000071219812874';

var r = s.substr(0,7) + s.substr(7).replace(/.(?=.{4,}$)/g, '*');

console.log(r);

  • s.substr(0,7)- 获取从开始到第 7 个位置的字符
  • s.substr(7)- 从第 7 个位置开始获取字符
  • .replace(/.(?=.{4,}$)/g, '*')- 使用前瞻,将除最后 4 个字符之外的所有字符替换为*
于 2016-11-27T07:22:56.390 回答