正则表达式来掩盖 IBAN

Posted

技术标签:

【中文标题】正则表达式来掩盖 IBAN【英文标题】:regex to mask IBAN 【发布时间】:2017-04-11 02:53:21 【问题描述】:

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

例子:

输入:

PL61109010140000071219812874

输出:

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

我写了以下正则表达式:

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

但是js不支持lookbehind

【问题讨论】:

【参考方案1】:

您可以在 Regex 中使用组来代替 LookBehind

var myString = "PL61109010140000071219812874";
var myRegexp = /\w7(.*)\w4/g;
var match = myRegexp.exec(myString);
myString = myString.replace(match[1], '*********');
console.log(myString)

【讨论】:

@Nemesis 我的荣幸【参考方案2】:

(?&lt;=.7 是一个lookbehind 断言,不幸的是javascript regex 不支持lookbehind。

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

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 个字符之外的所有字符

【讨论】:

以上是关于正则表达式来掩盖 IBAN的主要内容,如果未能解决你的问题,请参考以下文章

IBAN正则表达式(所有IBAN)

IBAN 正则表达式设计 [重复]

正则表达式从 IBAN 捕获 BBAN?

IBAN 掩码的正则表达式

IBAN 的正则表达式允许空格并检查确切长度

是否有正则表达式来掩盖动态字母数字字符串的中间区域?