用X替换内部信用卡号的正则表达式?

ngD*_*per 0 javascript regex node.js sails.js

当卡号的长度在 15-19 个字符之间变化时,是否可以使用正则表达式将卡号中的所有字符替换为 X(左外 4 位和右外 4 位除外)?

我一直在寻找,但找不到具有可变卡长度的解决方案。

我正在构建一个sails.js 应用程序。

(注意:对于那些担心 PCI 合规性的人,我不会存储信用卡号,也不是实时应用程序)

alp*_*avo 6

使用这种模式

(?<=\d{4})\d(?=\d{4})
Run Code Online (Sandbox Code Playgroud)

并用演示替换X

(?<=            # Look-Behind
  \d            # <digit 0-9>
  {4}           # (repeated {4} times)
)               # End of Look-Behind
\d              # <digit 0-9>
(?=             # Look-Ahead
  \d            # <digit 0-9>
  {4}           # (repeated {4} times)
)               # End of Look-Ahead  
Run Code Online (Sandbox Code Playgroud)

如果您的引擎不支持后视,请改用此模式

^(\d{4})\d(?=\d{4})|\d(?=\d{4})  
Run Code Online (Sandbox Code Playgroud)

注意:仅适用于 9+ 位数字 演示