我必须用'*'代替信用卡的前(n-4)个字符。
我正在使用以下三行代码。
var cardnumber = '1A2C3GF4DS84Ff';
last4digits = cardNumber.substring(cardNumber.length-4);
prevdigits = cardNumber.substring(0, cardNumber.length-4).replace(/[0-9]/g,'*');
$cache.cardNumber.val( prevdigits + last4digits);
我只是想知道我是否可以使用正则表达式在一行代码中做到这一点。
最佳答案
前瞻性确保数字后至少剩余四个字符。换句话说,后四个字符内的数字将不匹配:
var regexp = /\d(?=....)/g;
> cardnumber.match(regexp)
< ["1", "2", "3", "4"]
替换为星号:
> cardnumber.replace(regexp, '*')
< "*A*C*GF*DS84Ff"
有关前瞻的信息为here。
关于javascript - 正则表达式查找匹配项,但输入的后n个字符除外,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36364125/