如何使用正则表达式掩盖除最后四位数字以外的信用卡号

问题描述 投票:0回答:1

我正在尝试解决一个问题,在该问题上,我输入了人的名字,即他的信用卡号。它必须标识该卡来自哪家公司,并且必须掩盖除后四位以外的数字。例如以下几行

'Preston: 345678901234567'
'601234123456737 is a Discover card'

将更改为

'Preston: ....4567'
'....6737 is a Discover card'

到目前为止,我已经完成了如何使用http://www.regular-expressions.info/creditcard.html验证发卡公司的输入的信息:

American Express: ^3[47][0-9]{13}$ 
Discover: ^6(?:011|5[0-9]{2})[0-9]{12}$
MasterCard: ^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$
Visa: ^4[0-9]{12}(?:[0-9]{3})?$

我对如何隐藏除最后四个数字以外的其余数字感到困惑,并且没有太多文章和资源可用于帮助。

regex perl credit-card
1个回答
0
投票

下面是一个手动编写的示例,以显示如何将它们换出。这只是一个示例,您当然可以根据自己的需要进行更改并对其进行更改。

import re
datas = ['Preston: 345678901234567',
'601234123456737 is a Discover card']

for data in datas:
    print(re.sub(r'\d{11}','*'*11, data))

输出

Preston: ***********4567
***********6737 is a Discover card
© www.soinside.com 2019 - 2024. All rights reserved.