当卡号的长度在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