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

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

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

(注意:对于那些对PCI兼容感到担忧的人,我没有存储信用卡号,它不是实时应用程序)

最佳答案

使用这种模式

(?<=\d{4})\d(?=\d{4})


并替换w / X
Demo

(?<=            # 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




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

^(\d{4})\d(?=\d{4})|\d(?=\d{4})


注意:仅适用于9位数以上的数字
Demo

10-04 15:20