正则表达式,用于掩盖信用卡的除最后4位以外的所有数字,并带有破折号,空格和前导数字

时间:2019-03-05 07:39:07

标签: regex

我正在寻找带有正则表达式的EXPERT帮助,以屏蔽所有信用卡号,但保留最后4位数字。我在这里找到了一些相关但不会删除破折号/空格的站点。例如:

----原始----- 签证4263982640269299 4263982640269299 4263 9826 4026 9299 4263-9826-4026-9299 5263-9826-4026-9299 5263982640269299 5263 9826 4026 9299 - - 预期结果 - - 签证xxxxxxxxxxxx9299(不想再使用开头词) xxxxxxxxxxxx9299 xxxxxxxxxxxx9299 xxxxxxxxxxxx9299

不匹配b / c开头的数字不是4 签证5263-9826-4026-9299 5263982640269299 5263 9826 4026 9299 我已经尝试了一些,但这已经接近了,但是不知道如何排除最后4个:

\ b4 \ d(?:\ d [-] *?){13,16}

提前感谢大家的帮助!

2 个答案:

答案 0 :(得分:1)

您可以使用正向超前模式来确保匹配字符前面至少有4个非字母字符,并使用负向超前模式并在其后嵌套嵌套正向以避免避免在字母后匹配空格:

(?!(?<=[A-Z])\s)[^A-Z](?=[^A-Z\n]{4,})

演示:https://regex101.com/r/nA6hN9/155

答案 1 :(得分:0)

我终于找到了我问题的答案-谢谢大家的帮助!